我有obj第3方组件的对象,
obj
// this could take more than 30 seconds int result = obj.PerformInitTransaction();
我不知道里面发生了什么。我所知道的是,如果花费更长的时间,那就失败了。
如何为此操作设置超时机制,以便如果花费30秒以上,我就抛出MoreThan30SecondsException?
MoreThan30SecondsException
您可以在单独的线程中运行该操作,然后在线程连接操作上设置超时:
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."); } } }