回答編集履歴
1
誤字と表記揺れが酷いので修正
test
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
おそらく
|
5
|
+
おそらく、メインスレッド外から`AppendText`による画面描画を行おうとしたので、`InvalidOperationException`が発生したのではないでしょうか。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
`InvalidOperationException`は、コントロール
|
9
|
+
`InvalidOperationException`は、コントロールを作成したスレッド以外のスレッドがコントロールにアクセスしたときに発生する例外です。
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
掲示され
|
13
|
+
掲示されているコードでは、`SerialPort1_DataReceived`がユーザ入力イベント以外から呼び出され、ワーカースレッドが処理しているため、例外が起きているのだと思います。
|
14
14
|
|
15
15
|
|
16
16
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
- メインスレッド(UIスレッド)
|
22
22
|
|
23
|
-
- ワーカスレッド(バックグラウンドスレッド)
|
23
|
+
- ワーカースレッド(バックグラウンドスレッド)
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -32,11 +32,11 @@
|
|
32
32
|
|
33
33
|
|
34
34
|
|
35
|
-
コントロールにアクセスする部分(`this.txtLog.AppendText(DateTime.Now + ":データを受信しました" + Environment.NewLine);`など)を**
|
35
|
+
コントロールにアクセスする部分(`this.txtLog.AppendText(DateTime.Now + ":データを受信しました" + Environment.NewLine);`など)を**メインスレッドに委譲**してください。
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
|
39
|
+
メインスレッドへ処理を委譲するには、[Control.Invoke メソッド](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.invoke?view=netframework-4.8)を利用してください。
|
40
40
|
|
41
41
|
|
42
42
|
|