在 WPF 应用程序中,我将消息输出到文本框,并在这些消息之间调用一个设置仪器的函数。但是,这些消息都会同时出现(在函数调用结束时)。
我真的不知道如何清楚地解释我的问题。我会尝试...我有一个 WPF 应用程序,它使用串行端口从仪器获取数据。该应用程序包含一些按钮和一个用于输出消息的文本框。按下按钮后,应用程序会向仪器发送命令以更改某些参数(通过函数Set_COMM_MODE()
),然后返回。更改大约需要 5-10 秒。因此,我所做的是:在呼叫之前输出一条“请稍候”消息,在呼叫返回后输出一条“完成”消息。OuputText()
代码中的函数只是调用方法TextBox.AppendText()
。我的问题:呼叫返回时,所有输出文本都会在文本框中显示出来。我预计会出现“请稍候”...然后 5-10 秒后出现“完成”信息。但这一切都是同时出现的。但是,当我在第一条消息之后(在函数调用之前)放置 aMessageBox
时,该消息将出现在文本框输出上(没有被调用的函数)。但问题是我必须按“确定”MessageBox
才能继续。
Q(1):如何让后者发生而不需要求助于MessageBox
Q(2):MessageBox
为了创建这种行为,a 做了什么?
我尝试过:使用该Dispatch.Invoke()
方法在另一个线程上运行OutputText
。这个(Pause a window like MessageBox.Show())与我遇到的问题类似,但似乎没有得到明确的答案,而且我也不太理解解决方案。
void StartTest_btn_Click(object sender, RoutedEventArgs e)
{
OutputText("Please Wwait\r\n"); //<---- This should appear at once.
MessageBox.Show("Please Wwait"); //<--without this, both messages appear at same time after 10s.
Set_COMM_MODE("02"); //<--- This takes around 5-10s
OutputText("Done\r\n"); //<--- This should appear 5-10s later
}
我希望立即显示“请稍候” ,然后在函数返回后 5-10 秒后显示“完成”Set_COMM_MODE()
消息。
当年话下
相关分类