相关疑难解决方法(0)

在C#中使用Global Mutex有什么好的模式?

Mutex类被误解了,而Global mutex则更是如此.

在创建全局互斥锁时使用什么是好的,安全的模式?

一个会起作用的

  • 无论我的机器所在的语言环境如何
  • 保证正确释放互斥锁
  • 如果未获取互斥锁,则可选择不会永久挂起
  • 处理其他进程放弃互斥锁的情况

c# concurrency mutex

365
推荐指数
5
解决办法
10万
查看次数

如何在WPF中处理WndProc消息?

寻找WPF陡峭的学习曲线.

在好的Windows窗体中,我只是覆盖WndProc,并在它们进入时开始处理消息.

有人能告诉我如何在WPF中实现同样的事情吗?

c# wpf wndproc

106
推荐指数
3
解决办法
9万
查看次数

62
推荐指数
3
解决办法
10万
查看次数

Microsoft.VisualBasic命名空间是"真正的.NET"代码吗?

我的开发团队正准备开始一个新项目.自VB3时代以来,该商店一直是一个"VB商店",但现在流行的观点是我们是一个".NET商店",因为C#是专为.NET创建的,而VB.NET是一个改造,我们我决定继续前进写C#.争议围绕的问题是Microsoft.VisualBasic命名空间是否在新开发中具有合法位置,或者它是否仅用于VB6(及更旧)代码的向后兼容性.另一个更有趣的问题是,Microsoft.VisualBasic命名空间下的代码是否是.NET代码,如果它真的是在.NET包装器中精心打包的旧VB运行时,使其实际上是一个COM互操作控件(类似于WinForms如何包装非.NET Win32窗口API但仅暴露.

为了使这更令人困惑,我们的开发团队有一位Microsoft咨询服务顾问告诉我们Microsoft不再支持Visual Basic,包括Microsoft.VisualBasic命名空间下的VB运行时.

我正在寻找的是链接 - 最好是无懈可击的微软来源 - 链接到最终以这种或那种方式回答这个问题的文档.我已经在Google上尝试了几种搜索排列,并且没有更接近这个问题的底部.

编辑:显然我没有说清楚我的问题.我不是在问VB.NET是否是真正的.NET代码.我正在尝试确定Microsoft.VisualBasic命名空间 "下" 是否为.NET代码,或者它是否是旧的VB6运行时,它是经过精心打包并作为.NET代码公开的.有人已经说过9/10的命名空间只是从.NET的其他地方包装代码; 那个1/10怎么样?

.net vb.net

56
推荐指数
4
解决办法
8405
查看次数

如何检查应用程序的另一个实例是否正在运行

可能重复:
创建单实例应用程序的正确方法是什么?
当用户尝试打开新实例时,返回已打开的应用程序

有人可以显示如何检查程序的另一个实例(例如test.exe)是否正在运行,如果是,则停止加载应用程序(如果有现有实例).

.net c# windows

40
推荐指数
3
解决办法
11万
查看次数

如何将程序限制为单个实例

我在C#中有一个控制台应用程序,我想限制我的应用程序一次只运行一个实例.我如何在C#中实现这一目标?

c#

35
推荐指数
3
解决办法
2万
查看次数

WPF仅强制执行一个应用程序实例

如何只允许一个WPF应用程序实例运行?

谢谢.

wpf runtime instance

34
推荐指数
2
解决办法
2万
查看次数

确保只有一个应用程序实例

可能重复:
创建单实例应用程序的正确方法是什么?

我有一个Winforms应用程序,它通过以下代码启动启动画面:

Hide();
        bool done = false;
        // Below is a closure which will work with outer variables.
        ThreadPool.QueueUserWorkItem(x =>
                                  {
                                      using (var splashForm = new SplashScreen())
                                      {
                                          splashForm.Show();
                                          while (!done)
                                              Application.DoEvents();
                                          splashForm.Close();
                                      }
                                  });

        Thread.Sleep(3000);
        done = true;
Run Code Online (Sandbox Code Playgroud)

以上是主窗体的代码隐藏,并从加载事件处理程序调用.

但是,如何确保一次只加载一个应用程序实例?在主窗体的load事件处理程序中,我可以检查进程列表是否在系统上(通过GetProcessesByName(...)),但是有更好的方法吗?

使用.NET 3.5.

.net c# .net-3.5 winforms

23
推荐指数
2
解决办法
4万
查看次数

当用户尝试打开新实例时,返回已打开的应用程序

这是一个我一直无法弄清楚的问题.防止第二个实例是微不足道的,并且有许多方法,但是,恢复已经运行的进程则不然.我想要:

  • 最小化:撤消最小化并将正在运行的实例置于最前面.
  • 在其他窗口后面:将应用程序放在前面.

我使用的语言是VB.NET和C#.

.net c# vb.net windows

19
推荐指数
2
解决办法
9314
查看次数

正确的.NET方式来实现单个实例应用程序

我已经在StackOverflow上看到至少三种不同的方法来实现这一目标.

  1. 使用MUTEX:接受此SO问题的答案

  2. 使用Microsoft.VisualBasic库的WindowsFormsApplicationBase:对此SO问题的第二高投票答案

  3. 使用Process.GetProcessNames检查您的应用程序是否正在运行:此处的方法是作为此SO问题的答案发布的

我相信还有更多方法可以做到这一点.

我只是想知道其中一个是否是首选的,如果我选择"错误的",可能会产生什么后果.

.net c# single-instance

17
推荐指数
2
解决办法
1万
查看次数