关于UI线程等待的问题

gekiranger 2016-04-01 10:19:33
之前一直使用Microsoft.Win32; 的 OpenFileDialog来实现打开文件窗口的功能,后来觉得这个控件不能满足客户的要求,需要重新做一个自定义的OpenFileDialog,其他功能已经做了出来,但是现在遇到了一个关于UI线程等待的问题。一般OpenFileDialog的操作大致如下面代码所示:

OpenFileDialog OFD = new OpenFileDialog();
OFD.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
OFD.Filter = "文本文件(*.txt)|*.txt";
OFD.ShowDialog();
OpenFile(OFD.FileName);

OpenFileDialog控件在倒数第二行ShowDialog();这段代码执行后会弹出对话框窗口,并在用户操作完对话框里面的操作才继续执行最后一行OpenFile(OFD.FileName);这串代码。
那么我在制作这个控件的时候,如何实现不阻塞UI线程的同时,让主线程等待我这个对话框窗口的操作完成,再执行后面的代码呢?
...全文
170 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gekiranger 2016-04-01
  • 打赏
  • 举报
回复
引用 5 楼 shingoscar 的回复:
就像OpenFileDialog,本身没有什么等待的功能 而是由使用者决定调用Show还是ShowDialog
测试过果然可是,才疏学浅,受教了
wanghui0380 2016-04-01
  • 打赏
  • 举报
回复
ShowDialog,你自己要秀模态窗口,怎么有反过来说为啥他是“模态窗口”呢??
Poopaye 2016-04-01
  • 打赏
  • 举报
回复
就像OpenFileDialog,本身没有什么等待的功能 而是由使用者决定调用Show还是ShowDialog
Poopaye 2016-04-01
  • 打赏
  • 举报
回复
一样用ShowDialog Form和CommonDialog都有这个方法
gekiranger 2016-04-01
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
[quote=引用 楼主 gekiranger 的回复:] 如何实现不阻塞UI线程的同时,让主线程等待我这个对话框窗口的操作完成
搞清楚,通常所谓的UI线程就是主线程 所以你这个需求就是矛盾的[/quote] 的确两个是一样的东西,我表达得不清楚,我意思是怎么做到和OpenFileDialog一样保持这个线程等待。
Poopaye 2016-04-01
  • 打赏
  • 举报
回复
引用 楼主 gekiranger 的回复:
如何实现不阻塞UI线程的同时,让主线程等待我这个对话框窗口的操作完成
搞清楚,通常所谓的UI线程就是主线程 所以你这个需求就是矛盾的

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧