跨线程操作在Windows窗体中无效

Ter*_*rii 5 c# ftp invoke winforms threadpool

任何人都可以帮助我,我有一个问题我试图让这个代码通过线程池在后台工作,但我似乎无法让它工作我一直收到此错误:

Cross-thread operation not valid: Control 'ListBox3' accessed
from a thread other than the thread it was created on. 
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的代码:

private void DoWork(object o)
{
    var list = ListBox3;

    var request = createRequest(TxtServer.Text, WebRequestMethods.Ftp.ListDirectory);

    using (var response = (FtpWebResponse)request.GetResponse())
    {
        using (var stream = response.GetResponseStream())
        {
            using (var reader = new StreamReader(stream, true))
            {
                while (!reader.EndOfStream)
                {
                    list.Items.Add(reader.ReadLine());
                    ResultLabel.Text = "Connected";
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

您可以通过执行此操作来访问controll

 Invoke(new Action(() => {Foo.Text="Hi";}));
Run Code Online (Sandbox Code Playgroud)


jac*_*jac 5

您需要调用委托来更新列表.请参阅此MSDN示例.