具有实时分钟比较的通知系统

时间:2018-01-06 14:15:51

标签: c#

我试图建立一个通知系统,每隔一段时间弹出一次。 我正在使用来自Nuggets的Tulpep.NotificationWindow,但我遇到了问题,它不会弹出通知,但是作为消息框而不是Tulpep.NotificationWindow。

我的代码:

namespace SpawnBosi
{
public partial class Form1 : Form
{
    Thread t1;



    int channel1 = 46;
    int result;

    public Form1()

    {
        InitializeComponent();
        t1 = new Thread(new ThreadStart(checkforminutes));
        t1.Start();     
    }


    public void checkforminutes()
    {
        while (true)

        {
            result = DateTime.Now.Minute;
            compareminutes();
        }

    }


    public void Ch1Notificaton()
    {
        var popupNotifier = new PopupNotifier();
        popupNotifier.TitleText = "Title of popup";
        popupNotifier.ContentText = "Content text";
        popupNotifier.IsRightToLeft = false;
        popupNotifier.Popup();
    }
    public void compareminutes()
    {
        if (result == channel1)
        {
            Ch1Notificaton();
        }
    }
}
}

如果分钟发生变化,线程t1将每秒检查一次,并将channel1与实际的DateTime.Now.Minute进行比较。

如果时间是==并且channel1设置的时间应该通知。但它无法使用这个系统。我该如何解决我的问题?

更新

    int channel1 = 25;
    int channel2 = 26;




    public Form1()

    {
        InitializeComponent();
    }


    public void checkandcompareminutes()
    {

        int actualminute = DateTime.Now.Minute;
        if (actualminute == channel1 || actualminute == channel2)
        {
            Ch1Notificaton();         

        }

    }


    public void Ch1Notificaton()
    {
        var popupNotifier = new PopupNotifier();
        popupNotifier.TitleText = "Title of popup";
        popupNotifier.ContentText = "Content text";
        popupNotifier.IsRightToLeft = false;
        popupNotifier.Popup();



    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        checkandcompareminutes();
    }
}

1 个答案:

答案 0 :(得分:0)

我会在这里改变很多事情:

您不需要使用对象变量结果。使用局部变量并将checkforminutes和compareminutes的代码组合到一个方法中。

你应该使用Thread.Sleep至少等待,例如你的while循环中有500毫秒。这个循环在CPU时间方面非常详尽。

总的来说,你最好使用Timer类,而不是检查while循环中的时间。