簡體   English   中英

延遲課堂提問(C#)

[英]Delay class questions (C#)

我創建了一個名為“ Delay”的靜態類,該類基本上接受(double delay,ThreadStart action)的參數。 這里是:

 public class Delay
{
    public static void Execute(double delay, ThreadStart action)
    {
        Delay.Execute((int)delay, action);
    }

    public static void Execute(int delay, ThreadStart action)
    {
        Timer t = new Timer(delay);

        t.Elapsed += new ElapsedEventHandler(delegate(object sender, ElapsedEventArgs e)
        {
            t.Stop();
            action();
            t.Dispose();
            t = null;
        });

        t.Start();
    }

    private Timer t;

    public Delay(int delay, ThreadStart action)
    {
        t = new Timer(delay);

        t.Elapsed += new ElapsedEventHandler(delegate(object sender, ElapsedEventArgs e)
        {
            if (t != null)
            {
                t.Stop();
                action();
                t.Dispose();
            }

            t = null;
        });
    }

    public void Execute()
    {
        t.Start();
    }

    public void Cancel()
    {
        if (t != null)
        {
            t.Stop();
            t.Dispose();
        }

        t = null;
    }
}

我有幾個問題。

  1. 真的不好嗎? 我的朋友告訴我,這肯定會給我帶來錯誤,但是我還沒有經歷過。
  2. 有辦法改善嗎? 它現在可以正常工作,但我不希望它將來會泄漏內存。

最好的祝福。

您不需要任何這些,只需使用以下異步/等待功能即可:

public async Task Execute(double delay, ThreadStart action)
{
    await Task.Delay((int)delay).ContinueWith((x) => action());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM