如何解决如何正确等待来自无模式窗口的输入
我有一个具有两个无模式窗口的应用程序。第一个窗口具有一个按钮,可以从另一个窗口进行输入。我的问题是(存在吗?)调用第二个窗口进行输入并阻止调用者的正确方法,直到用户在文本框内提供输入为止。这是我要在这里解释的视觉效果:
- 应用启动。主窗口打开
- 用户单击主窗口中的第一个按钮->第二个“无模式”窗口打开。用户切换回主窗口
- 用户单击主窗口中的第二个按钮->第二个“无模式”窗口被激活并聚焦
- 第二个窗口现在等待输入到文本框中。这就是问题所在:如何阻止从主窗口进行的呼叫,等待文本框中的输入以及仅当用户在文本框中输入了输入而又不冻结窗口时才返回到呼叫者
我现在使用此sudo代码作为解决方案,但是循环发生在主应用程序代码内部,并且仅循环使用太多cpu。不确定在C#和WPF中是否有更好/正确的方法来做到这一点:
// input control mechanism
private object _inputLock = new object();
private bool _waiting = false;
// public string ReadInput() method starts waiting
do {
// pass control to dispatcher to update ui
inputTb.Dispatcher.Invoke(
() => { },System.Windows.Threading.DispatcherPriority.Background
);
lock (_inputLock) {
if (!_waiting)
break;
}
} while (true);
// input text box handler turns off waiting
private void SendInput() {
lock (_inputLock) {
_waiting = false;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。