我正在寻找实现通用方法的好主意,让一行(或匿名委托)代码执行超时.
TemperamentalClass tc = new TemperamentalClass();
tc.DoSomething(); // normally runs in 30 sec. Want to error at 1 min
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个可以在我的代码与气质代码交互的许多地方(我无法改变)优雅地实现的解决方案.
另外,如果可能的话,我想让违规的"超时"代码停止执行.
可能重复:
将超时设置为操作
如何在c#中为一行代码设置超时.例如
RunThisLine(SomeMethod(Some Input), TimeSpan.FromSeconds(10))
,SomeMethod以10秒的时间运行.提前致谢.
我有像这样的oledbconnection try-catch:
try
{
OleDbConnection Connection;
using (Connection = new OleDbConnection("Provider=MSDAORA.1;Data Source=DATABASE:1521/orcl//orcl1;Persist Security Info=True;Password=PASS;User ID=USER"))
{
Connection.Open();
v1 = 1;
Connection.Close();
}
}
catch (Exception)
{
v1 = 0;
}
Run Code Online (Sandbox Code Playgroud)
当我无法连接数据库时,请尝试捕获并返回v1 = 0.它正在工作但是当连接等待这么多时(例如30-40秒),尝试连接和页面等待这么多.
我试过Connect Timeout了oledbconnection,但不工作.
我需要尝试几秒钟,如果有任何问题,需要去抓.
我怎样才能做到这一点?