好的,我知道为什么这会给我这个错误:
跨线程操作无效:控件“ Form1”从创建该线程的线程之外的线程访问。
但是…我该如何使其可行?
System.Threading.Thread t = new System.Threading.Thread(()=> { // do really hard work and then... listView1.Items.Add(lots of items); lots more UI work }); t.Start();
我不在乎线程的时间或完成方式,所以我真的不在乎任何花哨的内容或过于复杂的atm,除非在新线程中使用UI会使事情变得容易得多。
你不能 UI操作必须在所属线程上执行。期。
您 可以 做的是在子线程上创建所有这些项目,然后Control.Invoke在此处调用并进行数据绑定。
Control.Invoke
或使用 BackgroundWorker
BackgroundWorker
BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { /* create items */ }; bw.RunWorkerCompleted += (s, e) => { /* databind UI element*/ }; bw.RunWorkerAsync();