-1

ハードウェアを接続したポートから値をフェッチしようとしています。ポートから値を取得していますが、この値を入力しようとすると次のエラーが発生します

「別のスレッドが所有しているため、呼び出しスレッドはこのオブジェクトにアクセスできません」

ここに私のコードがあります

private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        string strAck = port.ReadExisting();

        if (!string.IsNullOrWhiteSpace(strAck))
        {
            txtvalue = strAck;            
        }
    }            
    catch(Exception ex)
    {    
    }
}
4

1 に答える 1

0

ここで何度も回答されているため、この質問を投稿する前に、問題に対する回答を検索する必要がありました。簡単に言うと、UI スレッドで値を設定する必要があります。次のようにします。

this.Dispatcher.Invoke((Action)(() =>
{
    string strAck = port.ReadExisting();
    if (!string.IsNullOrWhiteSpace(strAck))
    {
        txtvalue = strAck;            
    }
}));
于 2013-08-27T10:00:12.720 に答える