可能重复:
创建单实例应用程序的正确方法是什么?
我有一个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.
如果我写一个for,do或while循环,是否可以使用return关键字来解决这个问题?
例如:
class BreakTest
{
public static void Main()
{
for (int i = 1; i <= 100; i++)
{
if (i == 5)
**return;**
Console.WriteLine(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道return可以用来退出if语句所以我很好奇,因为我从未尝试过(并且无法访问我的软件来编写代码来测试它).
在制作IDE(例如SharpDevelop)或编译器/语言解析器时,我需要知道哪些计算机科学主题?我不希望有完整的深度教程列表,只是一个主题列表,这些主题对我有所改进.
我是否正确地认为解析器有一些关于语言的语法/语义的规则,并根据这些规则验证代码?这似乎是一个简单的方法?
谢谢
所以Thread.Sleep()很糟糕(http://msmvps.com/blogs/peterritchie/archive/2007/04/26/thread-sleep-is-a-sign-of-a-poorly-designed-program.aspx).
是否有任何建议的替代方法来模拟程序执行中的暂停?比如一个循环?虽然我认为这在初始化变量,检查bool条件等方面涉及很多开销.
谢谢
我正在阅读维基百科上的对象池模式(http://en.wikipedia.org/wiki/Object_pool),它提到了"危险的陈旧状态".
什么是"陈旧"状态?我知道状态是变量/数据,例如我的字段和属性,但它陈旧或危险陈旧是什么意思?
我参与了一个个人项目,需要相当广泛的边缘检测和图像分割/对象识别知识.
在编写代码之前,我知道规划/理解的重要性,考虑到这一点,开始学习这些计算领域的最佳位置是什么?我理想地寻找在线文章/论文.
谢谢
在讨论密封类时,经常提到术语"虚函数表".究竟是什么?我刚才读到一个方法表(我不记得这个目的的目的)和谷歌/搜索这里带来了C++相关的结果.
谢谢
我已经通过参考听说过元帅,按照价值流血和元帅的元帅.这3个有什么区别?我知道这些是在跨appdomains /序列化传输数据时使用的,但不是更多.
在下面的代码示例中,{0:X2}含义是什么?这来自MCTS应用程序开发基础书的反思部分(涵盖动态代码等).
foreach(Byte b in body.GetILAsBodyArray())
{
Console.Write("{0:X2}", b);
}
Run Code Online (Sandbox Code Playgroud) 很多时候,提到只捕获我可以处理的异常(抛出,包装和/或记录,或执行一些其他操作).
哪些例外无法处理?这是不应该被抓住的意思吗?我知道不应该捕获可能表示对象引用为null的异常,因为它们是编程错误而不是用户激发的.还有其他例子吗?另一个是ExecutionEngineException.
此外,catch块中的操作过程总是在rethrow,wrap/rethrow和log之间吗?是否有需要在catch块中执行某些其他操作的情况?
谢谢