我不熟悉编码和我的第一个项目之一,我必须从数字卡尺读取信息并将其显示在Web应用程序的文本框中。我发现了另一个项目的代码,其他一些项目在他们使用Windows窗体的地方创建。我正在使用visual studio 2013,我正在修改他们的代码以使用Web应用程序而不是Windows窗体。我遇到的麻烦是,他们有两行我不理解的代码,似乎无法找到如何修改它们以满足我的需求的答案。代码是
this.BeginInvoke(new EventHandler(delegate { SetTheText(strErg); }));
Application.DoEvents();
问题是BeginInvoke和DoEvents()都有一个错误,说没有任何定义。有没有办法将其修改为Web应用程序?或者有没有办法让这两个定义都知道?
对许多人来说这似乎微不足道,但我无法弄明白。任何帮助将不胜感激!
我有以下使用声明 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用System.Web; 使用System.Web.UI; 使用System.Web.UI.WebControls; 使用System.ComponentModel; 使用System.Data; 使用System.Drawing; 使用System.Text; 使用System.Threading; 使用System.IO.Ports; 使用Telerik.Web.UI; 使用System.Windows.Forms; 使用System.Web.Services.Protocols; 使用System.Web.Services
答案 0 :(得分:3)
这些不适用于Web应用程序。
与网络应用不同,Windows应用需要拥有主线程或GUI线程。这意味着您经常需要使用BeginInvoke将命令编组到该线程上。
在VB 6中使用DoEvents来模拟多线程。现在的Windows应用程序真的不是必需的,特别是现在我们有async / await。通常人们会调用DoEvents来重新绘制屏幕,这不适用于网络应用。
总而言之,你并不需要它们。只需直接调用SetTheText即可。