WPF 单实例方法

WPF 中,在Application.Run()运行后且Window.Show()运行前会激发Application.Startup事件,在Application类里有OnStartup()是Application.Startup事件的Handler,可以重载OnStartup(),在OnStartup()里面控制应用实例。

    public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            bool isCanCreateNew;
            System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isCanCreateNew);
            if (!isCanCreateNew)
            {
                MessageBox.Show("已经启动!");
                this.Shutdown(1);
            }
            Console.WriteLine("OnStartup");
            base.OnStartup(e);
        }
    }


或者订阅Application.Startup事件

<Application x:Class="WpfStudy.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup"
             StartupUri="MainWindow.xaml">
    
    <Application.Resources>
</Application.Resources>
     public partial class App : Application
    {

        private void Application_Startup(object sender, StartupEventArgs e)
        {
            bool isCanCreateNew;
            System.Threading.Mutex mutex = new System.Threading.Mutex(true, "OnlyRunOneInstance", out isCanCreateNew);
            if (!isCanCreateNew)
            {
                MessageBox.Show("已经启动!");
                this.Shutdown(1);
            }
            Console.WriteLine("OnStartup");
        }
    }



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
WPF SignalR是一种实时Web应用程序框架,可用于在浏览器和服务器之间实现双向通信。在WPF中,您可以使用SignalR来实现实时通信,并将状态更改推送到客户端。以下是一个简WPF SignalR实例,展示如何在WPF应用程序中使用SignalR。 1. 创建WPF应用程序 首先,您需要创建一个WPF应用程序。使用Visual Studio,选择“文件”>“新建”>“项目”,然后选择“WPF应用程序”。在创建项目向导中,选择“桌面应用程序(.NET Framework)”作为项目类型。 2. 安装SignalR 使用NuGet包管理器,安装SignalR客户端库和SignalR服务器库。 3. 添加SignalR客户端代码 在WPF应用程序中,打开MainWindow.xaml.cs文件,并添加以下代码: ```csharp using Microsoft.AspNet.SignalR.Client; public partial class MainWindow : Window { private HubConnection connection; private IHubProxy hubProxy; public MainWindow() { InitializeComponent(); connection = new HubConnection("http://localhost:8080/"); hubProxy = connection.CreateHubProxy("myHub"); // 接收消息 hubProxy.On<string>("broadcastMessage", message => { Dispatcher.Invoke(() => { // 将消息添加到ListBox中 listBox.Items.Add(message); }); }); // 连接SignalR服务器 connection.Start().Wait(); } private void Button_Click(object sender, RoutedEventArgs e) { // 发送消息 hubProxy.Invoke("Send", "WPF Client", textBox.Text); } } ``` 在上面的代码中,我们首先创建了一个SignalR连接,并使用连接创建了一个代理。然后,我们使用代理的On方法订阅了“broadcastMessage”事件,并在事件中接收到消息时将其添加到ListBox中。最后,我们使用代理的Invoke方法发送消息。 4. 添加SignalR服务器代码 在WPF应用程序中,打开“解决方案资源管理器”,右键击项目,选择“添加”>“新建项”,并创建一个新的SignalR Hub类。在这个类中,添加以下代码: ```csharp using Microsoft.AspNet.SignalR; public class MyHub : Hub { public void Send(string name, string message) { Clients.All.broadcastMessage(name, message); } } ``` 在上面的代码中,我们创建了一个名为“myHub”的Hub,并在Hub中添加了一个名为“Send”的方法。当客户端调用方法时,它将使用Clients.All.broadcastMessage方法将消息广播到所有连接的客户端。 5. 运行应用程序 现在,您已经准备好运行应用程序了。首先,启动SignalR服务器。然后,启动WPF应用程序。在WPF应用程序中,输入消息文本并击“发送”按钮。您应该能够在SignalR服务器和WPF应用程序之间看到实时通信。 以上就是一个简WPF SignalR实例。您可以使用这个实例作为起点来构建更复杂的实时Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值