是否可以调用ShowDialog(),但是要在主窗体下创建对话框窗口,而不是在顶部?
我正在调用ShowDialog,因为我想停止执行主程序。
我不需要对话框窗口,因为我会从线程创建许多对话框,它们会相互阻止。
答案 0 :(得分:2)
您需要读取线程的同步。要停止执行代码,请使用EventWaitHandle
对象。
而不是创建和显示WaitOne()
的对话框EventWaitHandle
:
private static EventWaitHandle ev;
//...
[MTAThread]
public static void Main()
{
//...
ev = new EventWaitHandle(false, EventResetMode.ManualReset);
//...
ev.WaitOne(); //Stop execution
//...
}
//Another thread function.
public static void ThreadProc()
{
//...
ev.Set(); //Continue execution of Main
//...
}
MSDN就是一个很好的例子。另请注意,您需要在再次使用阻止之前致电Reset()
或使用EventWaitHandle
选项创建EventResetMode.AutoReset
(请参阅MSDN上的详情)。