【问题标题】:How to update the UI thread with Task.Factory.StartNew?如何使用 Task.Factory.StartNew 更新 UI 线程?
【发布时间】:2014-08-02 23:57:43
【问题描述】:

我有以下代码,但它最初并没有更新 UI 线程。我做错了吗?

Protected Sub Copy_OnClick(sender As Object, e As EventArgs)

    StatusLabel.Text = "Processing..." 'This doesn't happen
    Copy.Enabled = False 'This doesn't happen

    Dim copyTask As Task = Task.Factory.StartNew(Sub() Copy())

    copyTask.Wait()

    If (copyTask.IsCompleted) Then
        Copy.Enabled = True
        StatusLabel.Text = "Done" 'This happens     
    End If

End Sub

【问题讨论】:

    标签: asp.net vb.net task-parallel-library


    【解决方案1】:

    是的,您正在等待 UI 线程。为什么你开始一个任务然后立即等待它?这在概念上没有意义。

    使用一种标准技术来解除对 UI 线程的阻塞。

    【讨论】:

    • 我不完全确定 Wait 做了什么,但你的回答让我明白了。当您说标准技术时,您是什么意思?
    • 我的意思是当你搜索“.net unblock ui thread”时会出现什么。答案取决于您的 .net 版本以及您想要做什么。
    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多