小编典典

设置操作超时

c#

我有obj第3方组件的对象,

// this could take more than 30 seconds
int result = obj.PerformInitTransaction();

我不知道里面发生了什么。我所知道的是,如果花费更长的时间,那就失败了。

如何为此操作设置超时机制,以便如果花费30秒以上,我就抛出MoreThan30SecondsException


阅读 279

收藏
2020-05-19

共1个答案

小编典典

您可以在单独的线程中运行该操作,然后在线程连接操作上设置超时:

using System.Threading;

class Program {
    static void DoSomething() {
        try {
            // your call here...
            obj.PerformInitTransaction();         
        } catch (ThreadAbortException) {
            // cleanup code, if needed...
        }
    }

    public static void Main(params string[] args) {

        Thread t = new Thread(DoSomething);
        t.Start();
        if (!t.Join(TimeSpan.FromSeconds(30))) {
            t.Abort();
            throw new Exception("More than 30 secs.");
        }
    }
}
2020-05-19