在.net桌面应用程序中设置超时

时间:2009-08-27 09:22:22

标签: c# vb.net timeout

您好我已经创建了一个小应用程序来移动一些文件并将它们放入数据库中。除了应用程序需要超时之外,这很有效。

如果我的应用程序在2小时内未完成任务,则会重新打开并锁定所有内容。我需要说,如果我的申请已经开放2小时关闭它。

有一种想法可以在应用程序中设置超时。我有一个谷歌这个,并在system.threading中发现了一些关于timeout = infinite和threading.sleep = 200的东西但是并不是真的理解这一点。

另一个想法是,使用计时器并计算最多2个小时,然后调用一个关闭方法,这样接缝就像是作弊。

任何关于C#或Vb

超时的想法

遗憾的是,这不适用于数据库连接,这不是应用程序失败的地方。

3 个答案:

答案 0 :(得分:1)

如果只允许一个应用程序实例同时运行呢?

我猜你正在安排运行:看一下这段代码,以防止应用程序的多个实例而不改变调度。

static void Main(string[] args)
{
    Mutex flag = new Mutex(false, "UNIQUE_NAME");
    bool acquired = flag.WaitOne(TimeSpan.FromMilliseconds(0));  // 0 or more milliseconds
    if (acquired)
    {
        Console.WriteLine("Ok, this is the only instance allowed to run.");

        // do your work, here simulated with a Sleep call
        Thread.Sleep(TimeSpan.FromSeconds(5));

        flag.ReleaseMutex();
        Console.WriteLine("Done!");
    }
    else
    {
        Console.WriteLine("Another instance is running.");
    }
    Console.WriteLine("Press RETURN to close...");
    Console.ReadLine();
}

请不要放弃你的Mutex ......; - )

HTH

答案 1 :(得分:0)

另一种选择呢?设置一个标志,指示进程当前是否正在运行。

如果进程正在运行,则不要启动第二个进程或关闭第一个进程,或者可以设置一个计时器并在几分钟后再次检查(?)

答案 2 :(得分:0)

可能DbConnection / DbCommand对象的超时更合适(查看MSDN)