0
こんにちは、シリアルポートから6バイトを受信したいのですが、TabItem1が選択されているときだけです。 そして、設定のチェックボックスの状態は、そのバイト... 例に依存しますが、それは動作していない:シリアルポート、チェックボックス、スレッディング
private void receiveData()
{
for(int i = 0; i < 3; ++i)
inputs[i] = serialPort.ReadByte();
for (int i = 0; i < 3; ++i)
outputs[i] = serialPort.ReadByte();
checkBoxI1.IsChecked = inputs[0] == 32 ? true : false;
checkBoxI2.IsChecked = inputs[1] == 32 ? true : false;
checkBoxI3.IsChecked = inputs[2] == 32 ? true : false;
checkBoxQ1.IsChecked = outputs[0] == 32 ? true : false;
checkBoxQ2.IsChecked = outputs[1] == 32 ? true : false;
checkBoxQ3.IsChecked = outputs[2] == 32 ? true : false;
}
// Tab change
private void tabControl1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (tabControl1.SelectedItem == tabItem1)
{
serialPort.Close();
try
{
receiveThread.Abort();
}
catch (NullReferenceException)
{
}
}
else if (tabControl1.SelectedItem == tabItem2)
{
serialPort.Open();
receiveThread = new Thread(receiveData);
receiveThread.Start();
}
}
それではどうやって「うまくいきませんか」?どのような行動を取っていますか?これまでにどのようにデバッグしましたか?どのようなエラーメッセージが表示されますか? – Gray
WPF/WinForms /または?なぜマルチスレッドタグを設定するのですか?非同期オペレーションについては何もありません – sll
ここで 'checkBoxI1.IsChecked = inputs [0] == 32? true:false; '....私は_InvalidOperationExceptionを持っています - 別のスレッドがそれを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできません。 –