标签:
今天一个客户反映上传文件程序卡死了,系统上传文件这么稳定的功能怎么可能有这个问题!现场一看果真如此,遂到本机测试,还真是这样。无语......
经过跟踪是在打开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
标签:
原文地址:http://www.cnblogs.com/jiangxiaoqiang/p/4270830.html