我想显示非模态信息窗口并等待其他线程中的智能卡触摸。我需要阻止我的主UI线程以防止用户操作,除非用读卡器触摸智能卡。 我在主线程中这样做:
InformationWindow infoWindow = new InformationWindow();
infoWindow.tblockInfo.Text = someInfoAboutRequieredAction;
infoWindow.Show();
Semaphore.WaitOne();
infoWindow.Close();
它工作正常并且在某些情况下正常绘制,但我的信息WPF窗口通常没有完全绘制。只有标题部分,窗口内没有一个控件(和背景颜色)可见,因为它挂起
请帮助,我一周不知道该怎么做
P.S。我在InvalidateVisual()
之前已经尝试UpdateLayout()
,Thread.Sleep
和Semaphore.WaitOne()
,但它没有帮助
答案 0 :(得分:0)
阻止主UI线程与阻止UI非常不同。您最好禁用UI(例如MainWindow.IsEnabled = false
)并离开UI线程来绘制窗口。
这也允许您向InformationWindow
添加取消按钮,以便在有人启动此过程并且没有可用的智能卡时使用。