我试图建立一个通知系统,每隔一段时间弹出一次。 我正在使用来自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();
}
}
答案 0 :(得分:0)
我会在这里改变很多事情:
您不需要使用对象变量结果。使用局部变量并将checkforminutes和compareminutes的代码组合到一个方法中。
你应该使用Thread.Sleep至少等待,例如你的while循环中有500毫秒。这个循环在CPU时间方面非常详尽。
总的来说,你最好使用Timer类,而不是检查while循环中的时间。