And*_*rew 3 .net c# user-interface multithreading
我试图从我已经提交的应用程序中找出一些意义,以便追踪错误的来源.这里有一些代码(在此简化),它创建了四个线程,这些线程又在主窗体上填充列表视图.每个方法从数据库获取数据并从资源dll检索图形,以便直接填充图像列表和列表视图.
从我在这里阅读(链接)不应该从UI线程以外的任何线程更新UI元素,但这似乎工作?
Thread t0 = new Thread(new ThreadStart(PopulateListView1));
t0.IsBackground = true;
t0.Start();
Thread t1 = new Thread(new ThreadStart(PopulateListView2));
t1.Start();
Thread t2 = new Thread(new ThreadStart(PopulateListView3));
t2.Start();
Thread t3 = new Thread(new ThreadStart(PopulateListView4));
t3.Start();
Run Code Online (Sandbox Code Playgroud)
错误本身是System.InvalidOperationException"图像无法添加到ImageList".让我想知道上面的代码是否以某种方式链接.
这是填充推荐用户界面的方法,如果没有,那么可能出现的并发症是什么?
更新:
我可能通过引用"形式"给出了一些错误的信息.该应用程序是一个Windows窗体应用程序,但代码来自基于用户控件的插件应用程序.线程在由此控件公开暴露的初始化方法内创建.listviews等也是此插件usercontrol的一部分.
小智 6
不要使用线程 - 如果你必须这样做,请在THreadPool上使用WOrkItems.对于长时间运行的项目,应该重新考虑线程使用 - 一个THreadPool或新的.NET 4.0任务API更适合这种方式.
UI元素应该只从元素创建线程中获取.它"工作"与否"取决于您使用的.net框架的版本,或者如果您打破它,控件的确是什么.
| 归档时间: |
|
| 查看次数: |
3135 次 |
| 最近记录: |