串行IO异步问题

时间:2014-03-05 01:29:36

标签: c# .net winforms asynchronous

我的串行数据已经进入我的应用程序,根据定义,它是异步的,所以当尝试更新标签以显示传入数据时,我遇到了麻烦。我时不时地在lblRx.AsyncUpdate行上收到错误,告诉我该对象正在其他地方使用。

目前,我使用以下代码;

private void IODataReceived(object sender, IODataEventArgs e)
{
    lblRx.AsyncUpdate(() => lblRx.Text = string.Format("{0}:\t{1}", e.Timestamp, e.Data));
    SetBackColors(false, eIODirection.In);
}

public static void AsyncUpdate(this Control ctrl, ActionCallback action)
{
    if (ctrl != null)
    {
        if (!ctrl.IsHandleCreated && ctrl.IsDisposed)
            ctrl.CreateControl(); // MSDN says CreateControl() is preferred over CreateHandle().
        if (!ctrl.IsDisposed)
            AsyncInvoke(ctrl, action);
    }
}

AsyncUpdate方法不是问题(AFAIK ......在其他情况下效果很好) 我想我需要在调用AsyncUpdate之前锁定控件。或者有更好的方法来处理这种情况吗?

0 个答案:

没有答案