0

我想显示非模态信息窗口并等待其他线程中的智能卡触摸。我需要阻止我的主 UI 线程以防止用户操作,除非智能卡将被读卡器触摸。我在主线程中这样做:

InformationWindow infoWindow = new InformationWindow();
infoWindow.tblockInfo.Text = someInfoAboutRequieredAction;
infoWindow.Show();

Semaphore.WaitOne();

infoWindow.Close();

它工作正常并且在某些情况下可以正常绘制,但我的信息 WPF 窗口通常没有完全绘制。只有标题部分,窗口内没有一个控件(和背景颜色)在悬挂时可见

请帮忙,我一个星期不明白该怎么办

PS我已经尝试过InvalidateVisual(),以前也试过UpdateLayout(),但没有帮助Thread.SleepSemaphore.WaitOne()

4

1 回答 1

0

阻塞主 UI 线程与阻塞 UI 非常不同。您最好禁用 UI(例如MainWindow.IsEnabled = false)并让 UI 线程来绘制窗口。

这也将允许您添加一个取消按钮InformationWindow,以防有人启动此过程并且手头没有智能卡。

于 2013-08-27T10:50:48.600 回答