在我的windows窗体应用程序中,我有一个textbox和backgroundworker组件。在backgroundworker的事件中,我试图访问textbox的值。我该怎么做呢?当我尝试访问textbox的值时,在dowork事件处理程序代码中得到以下异常:
Cross-thread operation not valid: Control 'txtFolderName' accessed from a thread other than the thread it was created on`发布于 2013-04-02 17:34:09
你只能在GUI线程中访问textbox / form controls,你可以这样做。
if(txtFolderName.InvokeRequired)
{
txtFolderName.Invoke(new MethodInvoker(delegate { name = txtFolderName.text; }));
}发布于 2013-04-02 17:38:04
尝尝这个
txtFolderName.Invoke((MethodInvoker)delegate
{
string strFolderName = txtFolderName.Text;
}); 发布于 2013-04-02 17:33:58
您需要使用MethodInvoker。像这样:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object sender, DoWorkEventArgs e)
{
MethodInvoker mi = delegate { txtFolderName.Text = "New Text"; };
if(this.InvokeRequired)
this.Invoke(mi);
};https://stackoverflow.com/questions/15760654
复制相似问题