正常にlock
動作しているさまざまなスレッドから外部デバイスへの通信を同期するために、グローバル オブジェクトを使用しています。
コントロールを使用してslider
値を設定し、それを外部デバイスに送信したいので、そのScroll
イベントを使用して変更をリッスンしてからデバイスに送信します。
問題は、lock
次のように、デバイスと通信する前にグローバル オブジェクトを使用する必要があることです。
private void slider_Scroll(object sender, EventArgs e)
{
lock(lockObject)
{
//send slider values to external device
}
}
を取得しようとすると、上記は常に無期限にハングアップしlock
ます。私のコードの残りの部分は正常に動作しているので、本物の競合状態があるとは思いません.UIスレッドで実行されているため、UIスレッドでブロックするのは悪い考えだと思います. 私は間違っているかもしれません。
ただし、この場合、上記のコードをメソッドにラップし、何らかの方法でUI スレッドから「メイン」スレッドで呼び出す必要があると思いますか?
どうすればこれを達成できますか?