我对线程完全不熟悉并且确实遇到了多线程问题。目前我有两个线程会打开相同的表单,我通过使用委托完全显示两个线程形式的文本但我还需要从每个线程获取值线程形式的文本框。
目前,当我尝试同时使用表单时,它似乎只让我从其中一个线程的文本框中获取值而不是另一个。我想我需要使用委托来从文本框中获取文本,但我已经尝试了几乎所有内容,似乎没有任何工作。
我的form1代码如下所示:
public partial class Form1 : Form
{
public Form1 _Form1;
string input;
public delegate void SetTextCallback(string text);
public delegate string GetTextBoxValueDelegate();
public Form1()
{
InitializeComponent();
_Form1 = this;
}
public void ThreadSafe(string text)
{
// Thread.Sleep(2000);
if (this.screenTextBox.InvokeRequired)
{
// It's on a different thread, so use Invoke.
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
// It's on the same thread, no need for Invoke
this.screenTextBox.Text += text;
}
}
public string getTextThreadSafe()
{
string input = (string)inputBox.Invoke(new GetTextBoxValueDelegate(getText));
return input;
}
public string getText()
{
return inputBox.Text;
}
private void SetText(string text)
{
this.screenTextBox.Text += text;
}
}
我是否遗漏了代理中的内容或没有正确编码?