我有一个小的“控制台应用程序”,其输出类型为“Windows应用程序”(因为我不想要控制台用户界面)。我为系统托盘创建了一个ContextMenu并初始化了一个Timer。完成之后,我希望应用程序保持活动状态,直到有人使用UI关闭它。什么是最好的 / 最干净的方法?由于我没有控制台,我不能使用Readline,在任何其他情况下似乎都是这样。
private static void Main()
{
var trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Exit", OnExit);
var notifyIcon = new NotifyIcon
{
Text = @"Foo Bar",
ContextMenu = trayMenu,
Visible = true
};
var timer = new Timer {Interval = 20000};
timer.Tick += DoStuff;
timer.Start();
//KEEP SOMEHOW ALIVE
}
答案 0 :(得分:0)
在你的情况下,更好的aproach将是带有隐藏主窗口的Windows应用程序。
对于隐藏主窗口,您可以使用Window.Hide
答案 1 :(得分:0)
我没有Windows,每种WaitOne或while(true)都会冻结trayIcon的上下文菜单。我现在和@ H.G一起去了。 Sandhagen作为评论链接:https://stackoverflow.com/a/10250051/4079949
这是我的解决方案:
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyCustomApplicationContext());
}
private class MyCustomApplicationContext : ApplicationContext
{
public MyCustomApplicationContext()
{
var trayMenu = new ContextMenu();
trayMenu.MenuItems.Add("Exit", OnExit);
var notifyIcon = new NotifyIcon
{
Text = @"Foo Bar",
ContextMenu = trayMenu,
Visible = true
};
var timer = new Timer {Interval = 20000};
timer.Tick += DoStuff;
timer.Start();
}
(...)
很多@ H.G。 Sandhagen! 当然,感谢你们所有人。
BR Matthias