winforms 托盘图标未显示

u0sqgete  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(175)

我已经在程序中添加了一个任务栏图标,它应该显示“up”,并有一些按钮来切换某些功能。但是,任务栏图标没有显示出来。
我已经检查了System.Windows.Forms是否包含在内,Application.Run()方法是否在创建任务栏图标后调用,NotifyIcon对象的Visible属性是否设置为true,Icon属性是否设置正确(尝试了几个不同的属性,SystemIcons、我的应用程序图标、指定的文件),以及Text属性是否设置正确。
我已经看了各种SO的问题和答案都无济于事,这是一个针对.NET Framework 4.7.2的Windows应用程序,它不利用表单,如果这很重要。

using System;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SomethingSomething
{
    internal static class Program
    {
        static NotifyIcon trayIcon;
        [STAThread]
        static void Main()
        {
            // Start the webserver
            StartWebServer().Wait();

            // Create the tray icon
            CreateTrayIcon();

            // Needed for tray icon
            Application.Run();
        }

        static void CreateTrayIcon()
        {
            trayIcon = new NotifyIcon
            {
                Visible = true,
                Icon = SystemIcons.Information,
                Text = "Current Song" + currentSong
            };

            var menu = new ContextMenu();
            var toggleRPCMenuItem = new MenuItem("Toggle RPC", (s, e) => ToggleRPC());
            var toggleAdsMenuItem = new MenuItem("Toggle Ads", (s, e) => ToggleAds());
            var exitMenuItem = new MenuItem("Exit", (s, e) => Exit());
            menu.MenuItems.Add(toggleRPCMenuItem);
            menu.MenuItems.Add(toggleAdsMenuItem);
            menu.MenuItems.Add(exitMenuItem);
            trayIcon.ContextMenu = menu;
        }
    }
}
nwsw7zdq

nwsw7zdq1#

原来我有一个在CreateTrayIcon();之前运行的方法:

StartWebServer().Wait();

从而阻止其余的代码。

相关问题