我是编码新手,对于我的第一个项目,我必须从数字卡尺读取信息并将其显示在 Web 应用程序的文本框中。我发现了其他人使用 Windows 窗体创建的另一个项目的代码。我正在使用 Visual Studio 2013,并且正在修改他们的代码以使用 Web 应用程序而不是 Windows 窗体。我遇到的麻烦是他们有两行我不理解的代码,并且似乎无法找到如何修改它们以满足我的需求的答案。代码是
this.BeginInvoke(new EventHandler(delegate { SetTheText(strErg); }));
Application.DoEvents();
问题是 BeginInvoke 和 DoEvents() 都有错误,表明两者都没有定义。有没有办法将其修改为网络应用程序?或者有没有办法让这两个定义都知道?
对于很多人来说这可能看起来微不足道,但我无法弄清楚。任何帮助将不胜感激!
我包含以下 using 语句 使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用系统.Web; 使用 System.Web.UI; 使用 System.Web.UI.WebControls; 使用 System.ComponentModel; 使用系统数据; 使用系统绘图; 使用系统文本; 使用系统线程; 使用系统.IO.端口; 使用 Telerik.Web.UI; 使用 System.Windows.Forms; 使用 System.Web.Services.Protocols; 使用 System.Web.Services
;
最佳答案
这些不适用于网络应用程序。
与 Web 应用程序不同,Windows 应用程序需要有主线程或 GUI 线程。这意味着您经常必须使用 BeginInvoke 将命令编码到该线程上。
DoEvents 在 VB 6 中用于模拟多线程。对于现代 Windows 应用程序来说,这确实没有必要,尤其是现在我们有了 async/await。通常人们会调用 DoEvents 来重新绘制屏幕,这不适用于 Web 应用程序。
所以总而言之,你不需要它们。直接调用SetTheText即可。
关于c# - 页面不包含 BeginInvoke 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24873774/