, , , . Thread.Abort, . , , .
public Result HeavyWorkTimer(TheirInterface impl)
{
var watch = new Stopwatch();
Exception savedException = null;
var workerThread = new Thread(() =>
{
try
{
watch.Start();
impl.DoHeavyWork();
watch.Stop();
}
catch (Exception ex)
{
watch.Stop();
savedException = ex;
}
});
var timeoutTimer = new System.Threading.Timer((s) =>
{
workerThread.Abort();
}, null, TimeSpan.FromSeconds(5), TimeSpan.Infinite);
workerThread.Start();
workerThread.Join();
return new Result(watch.Elapsed, savedException);
}
, , ThreadAbortException.
, , , Thread.Abort.