延迟API操作

本文关键字:操作 API 延迟 | 更新日期: 2023-09-27 17:54:52

我正在为我的软件编写一个API,它有很多接口,我的软件只是继承它们。
我希望API用户有可能在X毫秒后做一些事情,就像这样:

public void PerformAction(Action action, int delay)
{
   Task.Run(async delegate
   {
       await Task.Delay(delai);
       Form.BeginInvoke(action);
       // I invoke on the Form because I think its better that the action executes in my main thread, which is the same as my form's thread
   });
}

现在我知道任务就像一个新的线程,我只是想知道,这对我的软件不好吗?有没有其他更好的方法?
这个方法会被执行很多次,所以我不知道这种方法是好是坏

延迟API操作

你不应该为这个方法创建一个新的Task,你可以把这个方法改为Task,像这样:

public async Task PerformAction(Action action, int delay)
{
   await Task.Delay(delay);
   action(); //this way you don't have to invoke the UI thread since you are already on it
}

然后像这样简单地使用:

public async void Butto1_Click(object sender, EventArgs e)
{
    await PerformAction(() => MessageBox.Show("Hello world"), 500);
}
    public async Task PerformAction(Action action, int delay)
    {
        await Task.Delay(delay);
        action();
    }