相关疑难解决方法(0)

实现C#通用超时

我正在寻找实现通用方法的好主意,让一行(或匿名委托)代码执行超时.

TemperamentalClass tc = new TemperamentalClass();
tc.DoSomething();  // normally runs in 30 sec.  Want to error at 1 min
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个可以在我的代码与气质代码交互的许多地方(我无法改变)优雅地实现的解决方案.

另外,如果可能的话,我想让违规的"超时"代码停止执行.

c# multithreading asynchronous timeout c#-3.0

157
推荐指数
6
解决办法
7万
查看次数

如何表明方法不成功

我有几种类似的方法,例如.CalculatePoint(...)和CalculateListOfPoints(...).有时,它们可能不会成功,并且需要向呼叫者指出这一点.对于返回通用List的CalculateListOfPoints,我可以返回一个空列表并要求调用者检查这个; 但是Point是一个值类型,所以我不能在那里返回null.

理想情况下,我希望这些方法"看起来"相似; 一种解决方案可能是将它们定义为

public Point CalculatePoint(... out Boolean boSuccess);
public List<Point> CalculateListOfPoints(... out Boolean boSuccess);
Run Code Online (Sandbox Code Playgroud)

或者返回一个点?对于CalculatePoint,并返回null以指示失败.这意味着必须回归到非可空类型,这似乎是过度的.

另一种方法是返回布尔boSuccess,将结果(Point或List)作为'out'参数,并将它们称为TryToCalculatePoint或其他...

什么是最佳做法?

编辑:我不想使用Exceptions进行流量控制!有时候会失败.

c# methods return-value

13
推荐指数
3
解决办法
1151
查看次数

BackgroundWorker超时

System.ComponentModel.BackgroundWorker在我的WPF应用程序中使用.

如何设置超时BackgroundWorker

c# wpf timeout backgroundworker

5
推荐指数
1
解决办法
7575
查看次数