[Problem Solving] The Inter-thread operation is invalid: access the control from a thread that does not create the control "textBox1". The control textbox1
Background
A value calculated by an auxiliary thread is assigned to textBox1.text;
Solution
1. Add the following directly in the form constructor:
System. Windows. Forms. Control. checkforillegalcrossthreadcils = false;
The validity check of all controls is disabled.
2. Solve the problem through proxy (msdn)
Private delegate void SetTextCallback (string text); // call the following method to assign a value to textBox1.text: private void SetText (string text) {// InvokeRequired needs to compare the call thread ID and creation thread ID // if they are different, return true if (this. textBox1.InvokeRequired) {SetTextCallback d = new SetTextCallback (SetText); this. invoke (d, new object [] {text});} else {this. textBox1.Text = text ;}}
Delegate in. NET is used here.
For more information about delegate, see Delegate in C #.
[Reference] The Inter-thread operation is invalid: It is accessed by a thread that does not create the control "textBox1 ".