.NET Framework

Debug.Print

Debug.Printで、書式を指定して、デバッグ出力。Debug.Print メソッド (System.Diagnostics) | Microsoft DocsConsole.WriteLineと違って、Debug.WriteLineは書式を指定できないので、これを使う。"{}"の中に、文字列は順番だけ、整数値はDを付けて、Nは数値…

Debug.WriteLine

Debug.WriteLineで、デバッグ出力し、改行もする。Debug.WriteLine メソッド (System.Diagnostics) | Microsoft DocsConsole.WriteLineと違うのは、書式指定が出来ない事と、 Console.WriteLineでは、引数無しオーバーロードで改行できたが、Debug.WriteLine…

Debug.Write

Debug.Writeで、改行無しデバッグ出力。Debug.Write メソッド (System.Diagnostics) | Microsoft DocsForm1.csは、1つ目は、変数の値をデバッグ出力し、改行が無いので、改行文字も出力してる。 2つ目は、それぞれの型のリテラルをデバッグ出力、改行。 Debu…

Debug

コンソールアプリなら、ConsoleのWriteやWriteLineでプリントデバッグが可能だが、WinFormsなどのGUIアプリはそうはいかない。 Debugクラスの各メソッドを使うと、デバッグ実行時の出力画面でプリントデバッグできる。Debug クラス (System.Diagnostics) | M…

SynchronizationContext.Current

WinForms(Windowsフォームアプリケーション)の場合、SynchronizationContext.Currentはどうなるか。SynchronizationContext.Current プロパティ (System.Threading) | Microsoft DocsWinFormsのプロジェクト久しぶり過ぎて、 アンダースコア('_')付けないと…

SynchronizationContext

スレッド間の同期に関する情報を持っているのが、同期コンテキスト(SynchronizationContext)。 WinFormsなどで、Taskなどを使って処理をUIスレッドからワーカースレッドに切り替えた後に再びUIスレッドに戻ることが出来るのはこれのおかげらしい。Synchroniz…

Task<TResult>.Result

実は、Task<TResult>.Resultは、結果が確定するまでそのスレッドを止めて待っていてくれる。https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task-1.result?view=netframework-4.0なので、Thread.Sleepで待つ必要はない。これで実行すると、 Fun</tresult>…

Task<TResult>

Task.Factory.StartNewに指定したラムダ式で値TResultを返すと、Task<TResult>オブジェクトが返ってくる。https://docs.microsoft.com/ja-jp/dotnet/api/system.threading.tasks.task-1?view=netcore-3.1これには、非同期処理の戻り値や状態が格納されている。 MainCl</tresult>…

Task.ContinueWith

Task.ContinueWithで、完了した時に実行する継続タスクを指定する。Task.ContinueWith メソッド (System.Threading.Tasks) | Microsoft Docs [雑記] スレッド プールとタスク - C# によるプログラミング入門 | ++C++; // 未確認飛行 CMainClass.csで、t.Cont…

Thread.ManagedThreadId

Thread.ManagedThreadIdに、スレッドIDが格納されている。Thread.ManagedThreadId プロパティ (System.Threading) | Microsoft DocsメインスレッドとワーカースレッドのIDを確認する。 ThreadFunc Thread ID: 3 Main Thread ID: 1 ThreadFunc Thread ID: 3 M…

List<T>.ForEach

List<T>にすると、ForEachで各要素に対して、引数のAction<T>を実行できる。 (EnumerableにはForEachがないので注意。)https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.foreach?view=netcore-3.1foreachが無くても、それぞれの要</t></t>…

Enumerable.ToList

Listに変換するには、ToListを使う。https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.tolist?view=netcore-3.1ToArrayをToListにして、受け取り側をList<string>にするだけ。 Taro Saburo Goro 続行するには何かキーを押してください . . .変わ</string>…

Enumerable.ToArray

配列に変換するには、ToArrayを使う。https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.toarray?view=netcore-3.1名前に戻して、string配列を受け取るようにする。 Taro Saburo Goro 続行するには何かキーを押してください . . .文字列…

Enumerable.Select

絞り込まれた要素(行, Row)のどの値(列, Column)を返すかは、Selectで指定する。Enumerable.Select メソッド (System.Linq) | Microsoft Docs今回は、170以上のボディの年齢を返す。とすると、 30 25 17 続行するには何かキーを押してください . . .となる。…

Enumerable.Where

LINQで条件を絞り込むには、Whereを使う。Enumerable.Where メソッド (System.Linq) | Microsoft Docs空プロ空プロ。MainClass.csMainClass.csBody.csBody.csSystem.Coreを参照に追加System.Coreを参照に追加。Body.csは、LINQの項と同じ。MainClass.csは、b…

Thread.CurrentThread

Thread.CurrentThreadは、現在のスレッドオブジェクトを返すスタティックメソッド。Thread.CurrentThread プロパティ (System.Threading) | Microsoft DocsデリゲートとBeginInvokeなどを使った非同期処理において、UIスレッドとワーカースレッドが違うスレ…

TaskScheduler.Default

TaskScheduler.Defaultは、デフォルトのTaskSchedulerインスタンスを持つ。TaskScheduler.Default プロパティ (System.Threading.Tasks) | Microsoft DocsTaskScheduler.Currentと同じかどうか確かめる。実行すると、 Default: System.Threading.Tasks.Threa…

TaskScheduler

TaskSchedulerが、複数あるタスクをどのように実行していくか管理している。TaskScheduler クラス (System.Threading.Tasks) | Microsoft Docs TaskScheduler クラスまず、そのプログラムの現在のタスクスケジューラが何かを出力する。現在のタスクスケジュ…

TaskFactory.StartNew

TaskFactory.StartNewでタスクを実行する。TaskFactory.StartNew メソッド (System.Threading.Tasks) | Microsoft Docsたくさんオーバーライドメソッドがあるが、Actionだけのメソッドと同じ意味の引数を指定したメソッドで実行してみる。C# 非同期、覚え書…

TaskFactory

TaskFactoryでタスクの生成や実行順などの操作ができる。TaskFactory クラス (System.Threading.Tasks) | Microsoft DocsStartNew以外の他のメソッドを扱おうにも、この段階では1つずつ説明しないと難しそうなので、今回は、いったんインスタンスを受け取っ…

Task.Factory

Taskを実行する方法はもう一つあり、Task.FactoryプロパティにTaskFactoryインスタンスを持っているので、それのStartNewメソッドを使うこともできる。Task.Factory プロパティ (System.Threading.Tasks) | Microsoft DocsMainClass.csで、Task.Factory.Star…

Process.StandardOutput

Process.StandardOutputは、子プロセスの標準出力ストリーム。Process.StandardOutput プロパティ (System.Diagnostics) | Microsoft DocsProcess.StandardOutputから子プロセスの出力結果を読み出す。 中身はStreamReaderなので、ReadToEndで読み出せる。子…

TextReader.ReadToEnd

末尾まで読み込むなら、TextReader.ReadToEndを使う。TextReader.ReadToEnd メソッド (System.IO) | Microsoft Docs一気に読み込みたい場合は、これがいいだろう。戻り値に返ってきた文字列を全部textに突っ込む。全部読み込めた全部読み込めた。Sample/dotn…

TextReader.ReadLine

1行ずつ読み込むなら、TextReader.ReadLineを使う。TextReader.ReadLine メソッド (System.IO) | Microsoft Docs行ごとに処理したい場合は、これがいいだろう。もう無い場合はnullが返ってくるので、そこでループを抜ける。行ごとに出力行ごとに出力された。…

TextReader.Read

TextReader.ReadでTextReaderから文字を読み取る。TextReader.Read メソッド (System.IO) | Microsoft Docs1文字というのもあるけど、今回は指定されたバッファに指定された文字数読み取る。test.txtに5文字test.txtに5文字。しかしコード上は3文字しか読み…

Process.WaitForExit

Process.WaitForExitで、起動したプロセスが終了するまで待つ。Process.WaitForExit メソッド (System.Diagnostics) | Microsoft Docs前回は、メインのコマンドプロンプトが子のコマンドプロンプトを起動した後にすぐ終了したので1つにか見えなかった。 今回…

ProcessStartInfo

ProcessStartInfoクラスでさまざまな起動プロセスの設定ができる。ProcessStartInfo クラス (System.Diagnostics) | Microsoft Docs今回は、コマンドプロンプトを介して、pingコマンドを投げる。FileNameにEnvironment.GetEnvironmentVariableで取得したComS…

Process.StartInfo

Processオブジェクトインスタンスで実行する場合は、コマンドや引数などはStartInfoプロパティを使って設定する。Process.StartInfo プロパティ (System.Diagnostics) | Microsoft Docstest.txtを開くなら、こう指定すると、test.txtが開いた。test.txtが開…

Process.Start

Process.Startでプロセスを実行する。Process.Start メソッド (System.Diagnostics) | Microsoft Docsstaticメソッドの場合、コマンド名(実行ファイル名、実行ファイルパス)と、それ以降の引数を渡せる。 メモ帳でtest.txtを開く。として、test.txtを置いたt…

Environment.GetEnvironmentVariable

指定の環境変数の値を取得するには、Environment.GetEnvironmentVariableを使う。Environment.GetEnvironmentVariable メソッド (System) | Microsoft DocsComSpec、OS、Pathの値を取得する。として実行すると、 cmd = C:\Windows\system32\cmd.exe os = Win…