首页 > 代码库 > 在线程中使用OpenFileDialog

在线程中使用OpenFileDialog

今天一个客户反映上传文件程序卡死了,系统上传文件这么稳定的功能怎么可能有这个问题!现场一看果真如此,遂到本机测试,还真是这样。无语......

经过跟踪是在打开OpenFileDialog时导致,由于此表单打开是调用另一个入口进入的,在打开后记录下日志发现:线程号是独立的。由此可以判断打开表单的是新线程。那么是不是线程调用OpenFileDialog有限制呢?

经过一番搜索果真如此,调用时需要设置线程的ApartmentState属性为STA。那么问题可以初步解决了,新开一个线程调用上传方法:

 

        Thread thread = new Thread(new ThreadStart(UploadAffix));        thread.SetApartmentState(ApartmentState.STA);        thread.Start();

 

标红的语句是关键点。

 

 

参考:C# 多线程中OpenFileDialog和SaveFileDialog失效的解决方法

http://www.360doc.com/content/14/0210/16/12338415_351392547.shtml

 

在线程中使用OpenFileDialog