日期:2014-05-17  浏览次数:21017 次

聊天软件OpenFileDialog的问题【郁闷啊】
  
     最近做一个聊天软件,现在遇到一个问题,假入有A和B两个聊天窗,聊天窗有个功能就是发送文件,当A窗体调OpenFileDialog去选择文件的时候,发现B窗体以及主界面不能动了,这个能理解,因为UI线程阻塞了。但是发现QQ或者RTX能够A、B窗体互不影响的。A窗体弹出的OpenFileDialog只针对A窗体阻塞,B窗体弹出的OpenFileDialog只针对B窗体阻塞。

     求教各位牛人.NET有何办法实现这么一个功能,求教。分数不多,谢谢大家捧个场。

    【补充】发现RTX在弹出OpenFileDialog的时候起了一个线程,但是大家知道.NET非UI线程打开模态窗体肯定有问题,欢迎大家发表下看法。谢谢!

------解决方案--------------------
异步试试
------解决方案--------------------
你说的原理不对,不是什么阻塞

模态窗体其实是这样一些操作的组合,将打开的窗口设置为主窗口的子窗口,同时调用enablewindow禁用父窗口。

只要你调用这个api解除禁用,就不阻塞了。