C#でメインスレッドで動いている処理であるのか確認する方法

csharp C#

この記事の内容

この記事では、Visual Studioでのデバッグ時に、処理がメインスレッドなのか、ワーカースレッドなのかを確認する方法を紹介します。

これは、GUI開発では重要で、Windows FormsやWPFで開発する場合はメインスレッドでGUI部品(例えばTextBox)などを扱う必要があるからです。ワーカースレッドで触ってしまって、上手く動かないなど知らない方は戸惑うかと思います。

そのため、メインスレッドで動いているのか、ワーカースレッドで動いているかの確認方法を記載します。

確認方法

確認方法は簡単です。

[デバッグ] > [ウィンドウ] > [スレッド]を選択して、スレッドウィンドウを表示します。

この状態で、メインスレッドで動いているかどうか確認したい箇所にブレークポイントを設定して、ブレークポイントで止めます。すると、スレッドウィンドウでメインスレッドで動いているかどうかがわかります。

黄色の矢印が現在のスレッドで、メインスレッドに矢印があればメインスレッドで動作しています。

以下はメインスレッドではなく、ワーカースレッドで動いている例です。

以上、メインスレッドで動いているかどうかの確認方法でした。

ワーカースレッドでGUI部品にアクセスする場合は、BeginInvokeメソッドなどを使用して、UIスレッドに処理を行わせる必要がありますので、注意してください。

コメント