我处于较高水平的情况显示一个对话框如下:从多个线程
应用负载和永不会改变开始,为了这个,我的数据做缓存5个线程做一个呼叫的批一个WCF服务。
如果服务关闭,我会弹出一个通知用户出现通信错误的提示,询问他是否要重试或取消操作(该逻辑发生在进行服务调用的线程内部,不关心/知道任何其他正在运行的线程)。
由于我一次接听5个电话,服务中断,我会连续询问5次是否要重试操作或取消操作。
我想要做的是:因为我显示相同的问题只要求用户一次,并返回相同的结果,所有等待的线程。任何想法如何实现这一目标?这听起来不是个好主意,所以我也乐于听到其他方式来实现相同的行为。
public string Show(string key, Action<DialogBuilder> action)
{
lock (this) //now 4 threads are waiting here
{
//marshal the dialog to the UI thread
return _dispatcher.Send(() => new MyDialogForm().ShowDialog());
}
}
谢谢!
嗨泰奥曼,会在哪里重新设置的最佳方式dialogShown标志? – 2011-05-26 09:40:39
它不是线程安全的,最好将它重置在锁(this){}块中的任何位置。 – 2011-05-26 09:44:54
但是对于下一个传入线程,它不会总是'假'? – 2011-05-26 09:47:04