C#

C#

【C#】スレッドに引数を渡す2つの方法

C#でスレッドを使う際、スレッドのメソッドに引数を渡す方法を2つ紹介します。 ParameterizedThreadStart を使用するサンプルコード ParameterizedThreadStartを使用することで、スレッドメソッドに ...
C#

【C#】スレッドの処理の途中で外部からキャンセル終了する

スレッドの処理を外部から途中で終了させる方法を紹介します。 方法1:フラグを使用 フラグを使用してスレッドのループを制御し、外部からそのフラグを変更することでスレッドの実行を終了させる方法です。 using System; using Sy...
C#

【C#】スレッドのデッドロック:問題と対策

デッドロックは、複数のスレッドが互いに相手のリソースの解放を待っている状態で、どのスレッドも進行できなくなる問題です。ここでは、C#でデッドロックを起こすサンプルコードとその対策版を紹介します。 デッドロックが発生するサンプルコード 以下の...
C#

【C#】スレッド間のリソース共有: 問題と対策(lock ステートメント)

マルチスレッドプログラミングにおいて、スレッド間でリソースを共有する際、適切な同期処理を使用しないとデータの不整合や予期せぬバグが発生する可能性があります。この記事では、C#でスレッド間のリソース共有に関する問題発生と対策方法を紹介します。...
C#

【C#】スレッドで並列処理を行う

マルチスレッドプログラミングは、アプリケーションのパフォーマンスを向上させる強力な方法です。C#においては、比較的簡単にスレッドを作成して利用することができます。 サンプルコード 以下のサンプルコードは、2つのスレッドを並列実行させています...
C#

【C#】親プロセスのプロセスIDを取得する(祖父プロセスIDも)

バッチファイルで自身のプロセスIDを調べようと思うと確実な方法がないので、バッチファイルから呼び出されるコマンド側でプロセスIDが取得できないかと調べました。出来そうな方法が見つかったので紹介します。 サンプルコード 準備 プロジェクトの参...
C#

【C#】System.InvalidOperationException: コレクションが変更されました

C#プログラミングにおいて、コレクションの操作中にそのコレクションを変更しようとすると、「System.InvalidOperationException: コレクションが変更されました。列挙操作は実行されない可能性があります。」というエラ...
C#

【C#】指定時間待つ処理を作成する方法

C#では、System.Threading 名前空間の Thread.Sleep メソッドを使用して、簡単にスレッドの実行を指定した時間だけ停止させることができます。この記事では、指定時間待つ簡単なサンプルコードを紹介します サンプルコード...
C#

【C#】Process is terminated due to StackOverflowException.

スタックオーバーフローとは スタックオーバーフローは、プログラムの実行スタックにあるメモリが限界を超えてしまうエラーです。通常、再帰関数の無限呼び出しにより発生します。関数が自分自身を呼び出すと、その実行情報がスタックに追加され、このプロセ...
C#

【C#】全角文字を含む場合のPadLeft/PadRight

string.PadLeft/PadRight で文字の右寄せ/左寄せを使用としたとき、文字列に全角があると思うように位置合わせができません。今回は、このような場合に役に立ちそうなサンプルコードを紹介します。 サンプルコード 紹介する処理は...