gpt4 book ai didi

c# - 如何使用无限循环实现单例模式 - C#

转载 作者:行者123 更新时间:2023-11-30 13:34:46 24 4
gpt4 key购买 nike

我目前正在使用 C# 开发一个应用程序,该应用程序在其他方法调用的每次迭代之后通过 Thread.Sleep 调用无限循环运行。我的主要是 -

static void Main(string[] args)
{
bool isOnlyInstance = false;
Mutex mutex = new Mutex(true, "RiskMetricsSensitivitiesDatabaseLoader", out isOnlyInstance);

if (!isOnlyInstance)
{
return;
}

while (true)
{
ProcessData();
Thread.Sleep(MainLoopSleep);
}

GC.KeepAlive(mutex);
}

我已在该方法的末尾插入 KeepAlive 调用,以确保单例互斥按预期工作,如各种网站所述。对 KeepAlive 的调用应该防止垃圾收集丢弃互斥量,因为 .NET 期待预期/优化垃圾收集。

我的问题是,由于从未到达对 KeepAlive 的实际调用,我是否应该将它放在 Thread.Sleep 之后的循环中?编译器警告 KeepAlive 永远不会被调用,我担心它会因此在我的垃圾收集预防算法中忽略这一行。

最佳答案

Mutex 是一次性的。为什么不将其包装在 using 中?

using(new Mutex(blah, blah, blah)){
while(true){
Blah(blah);
}
}

请注意,这甚至无需将新的 Mutex 分配给命名变量就可以工作。

关于c# - 如何使用无限循环实现单例模式 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com