我正在为一位朋友审查一些代码,并说他在try-finally块中使用了一个return语句.即使try块的其余部分没有,Finally节中的代码是否仍会触发?
例:
public bool someMethod()
{
try
{
return true;
throw new Exception("test"); // doesn't seem to get executed
}
finally
{
//code in question
}
}
Run Code Online (Sandbox Code Playgroud) 在ac#threading应用程序中,如果我要锁定一个对象,让我们说一个队列,如果发生异常,该对象是否会保持锁定状态?这是伪代码:
int ii;
lock(MyQueue)
{
MyClass LclClass = (MyClass)MyQueue.Dequeue();
try
{
ii = int.parse(LclClass.SomeString);
}
catch
{
MessageBox.Show("Error parsing string");
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,catch之后的代码没有执行 - 但我一直想知道锁是否会被释放.
我希望每隔10秒从Windows服务(使用C#和.NET完成)调用Business层方法.但是,我不想使用Timer_Elapsed事件,因为如果第一个线程/进程仍在运行,它将启动另一个线程/进程.我只需要一个单线程方法,因为对同一个Business方法的多次调用会产生不必要的复杂性.
所以我在on_start中添加了一个do-while循环.我知道这不是正确的方法,因为它会产生这个过程,如果服务被关闭,它就会成为一个孤儿.
我该如何处理这个问题?
此致,Chak