我对 C# 很陌生,我正在开发一个 WPF 应用程序,该应用程序有一个后台进程,可以长时间连接 Web 服务。当我从 Web 服务中获取某些代码时,我将启动方法。除了创建“烤面包机”弹出消息的工作之外,我已经完成了所有工作。我创建了一个表单来充当烤面包机的弹出窗口。我的问题是它是从 backroundWorker 线程调用的,它只执行一次并且不会向上滑动屏幕。升起屏幕的定时器功能不运行。为简单起见,我使用了之前回答的问题中的代码:
public partial class Form1 : Form
{
private Timer timer;
private int startPosX;
private int startPosY;
public Form1()
{
InitializeComponent();
// We want our window to be the top most
TopMost = true;
// Pop doesn't need to be shown in task bar
ShowInTaskbar = false;
// Create and run timer for animation
timer = new Timer();
timer.Interval = 50;
timer.Tick += timer_Tick;
}
protected override void OnLoad(EventArgs e)
{
// Move window out of screen
startPosX = Screen.PrimaryScreen.WorkingArea.Width - Width;
startPosY = Screen.PrimaryScreen.WorkingArea.Height;
SetDesktopLocation(startPosX, startPosY);
base.OnLoad(e);
// Begin animation
timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
//Lift window by 5 pixels
startPosY -= 5;
//If window is fully visible stop the timer
if (startPosY < Screen.PrimaryScreen.WorkingArea.Height - Height)
timer.Stop();
else
SetDesktopLocation(startPosX, startPosY);
}
}
然后在我的 bgWorker_DoWork 方法中,我有:
var dict = new JavaScriptSerializer().Deserialize<Dictionary<string,
object>>(responseFromServer);
int notifyType = (int)dict["notificationType"];
switch (notifyType)
{
case 6:
Debug.WriteLine(responseFromServer); Form1 popup = new Form1();
popup.Show();
break;
default:
Debug.WriteLine(responseFromServer);
break;
}
作为 C# 的新手,我不知道如何在完全显示烤面包机消息之前保持计时器方法的执行。
或者有没有比表单更好的方法来实现这个 toast 弹出窗口?
请帮忙??谢谢你。