从Web应用程序中的线程更新控件标签

时间:2015-11-29 09:45:11

标签: c# asp.net multithreading winforms webforms

delegate void SetTextCallback( string text );    

private void UpdateControl( string text ) {
        if ( this.myLabel.InvokeRequired ) {
            SetTextCallback d = new SetTextCallback( UpdateControl );
            this.Invoke( d, new object[] { text } );
        }
        else {
            this.myLabel.Text = text;
        }
}

我有一个 WinForm 应用程序,在这个应用程序中,我使用线程来访问UI控件并更新它们。

现在,我想将此代码转换为 ASP.NET Web窗体,但 Web窗体无法使用InvokeRequiredInvoke方法。

Web窗体中的InvokeInvokeRequired方法的等效内容是什么?如何在 ASP.NET Web窗体<中实现和更新UI控件? /强>

我使用此UpdateControl的情况是我会将一些文件发布到文件夹中。这些标签将显示现在发生了什么,现在正在发送哪个文件,以及现在正在更新哪个数据库。

1 个答案:

答案 0 :(得分:0)

WinFormsWebForms UI是完全不同的世界,在其他框架中重写UI时,您应该根据该框架的概念设计UI,而不仅仅是寻找等价物。

您似乎需要使用 javascript jQuery 等库以及 ajax 等概念来获取Windows窗体应用程序中的内容。

Web应用程序中此类任务的等效项可能是使用 javascript 更改客户端中的UI,例如在计时器中或 ajax 调用成功后或之后其他一些事件。

此外,如果您以某种方式使用WbForms,可以将此类任务与使用 UpdatePanel 或使用 Ajax Control Toolkit 进行比较来更改UI。

对于该特定任务,在Webforms中上传文件,您可以查看AjaxFileUpload