用什么来替换C#类库中的WinForms Application.DoEvents()

本文关键字:Application WinForms DoEvents 什么 替换 类库 | 更新日期: 2023-09-27 18:25:08

我有一个连接到大型机的ActiveX控件(代码中的"rumba")。下面的代码在WinForms中工作,但我想把代码放在类库项目中。用什么替换Application.DoEvents()?我试着放Thread.Sleep或只是删除行,但伦巴只有在while循环结束后才开始连接。

这是我的代码:

    public bool Connect(int timeOutInSeconds = 5)
    {
        DateTime limit = DateTime.Now.AddSeconds(timeOutInSeconds);
        rumba.Connect();
        while (DateTime.Now < limit)
        {
            string s = GetCurrentScreenAsText();
            s = s.Replace("'0", null);
            if (!string.IsNullOrWhiteSpace(s))
                return true;
            Application.DoEvents();
        }
        return false;
    }

用什么来替换C#类库中的WinForms Application.DoEvents()

  1. 如果你真的想使用它,你可以随时在你的项目中包括system.windows.forms.dll

2,调用Application.DoEvent的唯一原因是允许应用程序在处理事件时处理其他事件。因此,您希望将事件包装在一个单独的线程中,例如使用BackgroundWorker或thread对象来模拟异步调用。在WPF中,有一个Dispatch,您可以调用或beginInvoke来异步执行方法。