如何使用异步任务作为带参数的方法

托马斯

尝试使用异步任务时,我感到困惑。如果我在没有参数的情况下使用这个方法,一切都很好,但是当我向它添加参数时,它说不能将 System.Threading.Tasks.Task 转换为 System.Func。那么如何正确使用它并修复这个错误呢?

主要的:

Timers t = new Timers();
public Form1()
{
    InitializeComponent();
    t.StartTimerTemplate(TEMPLATEupdateSong("test", "test", "test"));//error occurs in this line
}

async Task TEMPLATEupdateSong(string url, string sender, string labelName)
{
    string nowPlaying = await getter.getString(url);
    nowPlaying = XDocument.Parse(nowPlaying).ToString();

    var outputLabel = this.Controls.OfType<Label>()
                      .FirstOrDefault(control => control.Name == labelName);

    outputLabel.Invoke(new Action(() =>
        outputLabel.Text = sender + "\n" + nowPlaying
    ));
}

定时器.cs:

public void StartTimerTemplate(Func<Task> updateTemplate)
{
    System.Timers.Timer timer = new System.Timers.Timer(50000);
    timer.AutoReset = true;
    timer.Elapsed += (sender, e) => timer_Elapsed(sender, e, updateTemplate());
    timer.Start();
}

async void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e, Task task)
{
    await task;
}
西贝尔1us

您的方法需要 a Func<Task>,而不是 a Task

 t.StartTimerTemplate(() => TEMPLATEupdateSong("test", "test", "test"));

或者

t.StartTimerTemplate(async () => await TEMPLATEupdateSong("test", "test", "test"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用带参数的 Windows 任务计划运行命令

来自分类Dev

如何使用异步任务

来自分类Dev

如何使用异步等待作为模块方法

来自分类Dev

如何使用Microsoft伪造的Shim异步任务方法?

来自分类Dev

如何使用异步方法启动未等待的后台任务?

来自分类Dev

如何使用异步任务的返回值执行方法?

来自分类Dev

使用带参数的线程作为对象

来自分类Dev

带参数的任务清单

来自分类Dev

Javascript:如何使用参数化方法作为参数构建方法?

来自分类Dev

如何接受异步函数作为参数?

来自分类Dev

如何使用带变量的Action(Of T)参数调用方法

来自分类Dev

如何使用带参数的模块?

来自分类Dev

如何使异步方法对任务类型通用

来自分类Dev

如何等待运行异步方法的任务

来自分类Dev

如何在React Native中将useQuery作为异步任务调用

来自分类Dev

使用任务异步方法加载集合视图

来自分类常见问题

如何使用LINQ异步等待任务列表?

来自分类Dev

如何使用异步任务导致if语句

来自分类Dev

如何使用CancellationToken链接异步任务?

来自分类Dev

如何使用标签主机取消异步任务

来自分类Dev

如何在异步任务中使用return

来自分类Dev

具有从多个任务调用的参数的异步方法导致冲突

来自分类Dev

如何在异步编程中使用等待,异步和任务

来自分类Dev

如何使用值设置为Null的C#任务作为可选参数?

来自分类Dev

带参数的异步过程执行

来自分类Dev

如何使用反射调用“私有异步任务”类型的方法

来自分类Dev

使用异步任务取消任务

来自分类Dev

如何使用静态方法作为策略设计模式的默认参数?

来自分类Dev

如何使用流作为参数为方法编写unitTest

Related 相关文章

热门标签

归档