WPF仅在调试时正确显示

WPF仅在调试时正确显示,wpf,debugging,Wpf,Debugging,我是WPF的新手,正在编写一个程序,向通过串行端口进行通信的无线设备发送/接收消息。我被困在一个特定的部分,其中GUI没有按预期显示。。。但当我输入断点并进行调试时,数据会正确显示。如何调试在调试模式下正常工作的东西 其要点是,我向串行端口设备发送两条单独的消息,以填充GUI的两个不同部分 private void getDeviceIntoButton_Click(object sender, RoutedEventArgs e) { IDList.Dispatcher.Invoke

我是WPF的新手,正在编写一个程序,向通过串行端口进行通信的无线设备发送/接收消息。我被困在一个特定的部分,其中GUI没有按预期显示。。。但当我输入断点并进行调试时,数据会正确显示。如何调试在调试模式下正常工作的东西

其要点是,我向串行端口设备发送两条单独的消息,以填充GUI的两个不同部分

private void getDeviceIntoButton_Click(object sender, RoutedEventArgs e)
{

    IDList.Dispatcher.Invoke(new Action(() =>
    {
        //send message to serial port device to get ID#
    }));

    Thread.Sleep(100);

    SettingsList.Dispatcher.Invoke(new Action(() =>
    {
        //send message to serial port device to get settings
    }));
}
然后,我的事件处理程序将接收每个单独的消息并显示到GUI:

private void DisplayID(string data)
{
    IDList.Dispatcher.Invoke(new Action(() =>
    {
        //add received ID to ID list
    }));

}

private void DisplaySettings(string data)
{
    SettingsList.Dispatcher.Invoke(new Action(() =>
    {
        //add received setting to settings list
    }));
}

如果我只发送这两条消息中的一条,它会以某种方式工作,但是如果我同时发送这两条消息,GUI的任何部分都不会更新。同样,令人困惑的是,当我调试时,它们都正确显示。有什么想法吗?

你知道Thread.Sleep100是做什么的吗?你几乎看不到它的变化,因为这仅仅是100毫秒。此外,如果你正在睡眠UI线程,没有一个控件会更新,因为它们都在睡眠中。一旦它完成睡眠,它已经得到了更新的新信息。我们需要更多的信息。它以什么方式不能正确显示?你能提供截图吗?它在没有调试器的调试版本中工作吗?如果它在调试器中没有任何断点呢?这似乎是一个计时问题,而不是WPF特有的问题。我只会在您收到第一条消息的响应后发送第二条消息。您也不需要使用Dispatcher,除非您是从另一个线程与UI线程通信。@RyanEmerle,我的解决方法是在收到第一个响应后发送第二条消息,但我不确定这是否是一种好的做法。感谢那些回应的人;我会试着不睡觉,多睡一会儿,如果我仍然不成功,我会发送截图。再次感谢!