当前位置:  开发笔记 > 编程语言 > 正文

任务完成后运行一个函数

如何解决《任务完成后运行一个函数》经验,为你挑选了1个好方法。

我想异步运行一个函数来防止UI冻结.这里是按钮单击事件.

private void btnEncrypt_Click(object sender, EventArgs e)
{
    // Create new Vigenere object instant
    cryptor = new Vigenere(txtPassword.Text, txtBox.Text);

    // Run encryption async
    Task T = new Task(cryptor.Encrypt);
    T.Start();
}

现在我希望在Task T完成时调用以下函数,并将其返回值作为参数,如下所示:

private void Callback(string return_value)
{
    txtBox.Text = return_value

    // Some other stuff here
}

怎么做到这一点?



1> Stephen Ross..:

你可以做的是使用该ContinueWith(Action)方法.

所以你会有类似的东西

Task t = new Task(cryptor.Encrypt);
T.Start();

Task continuationTask = t.ContinueWith((encryptTask) => {
    txtBox.Text = encryptTask.Result;
    ...
})

实际上,这只是表示在当前任务完成后执行操作,完成可能会因取消而成功运行,故障或退出.您可能希望进行一些错误处理,以确保您没有尝试使用已取消或出现故障的任务的结果.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有