我正在使用以下组件:
我正在使用backgroundworker调用库方法.库会抛出异常,但永远不会调用RunWorkerCompleted处理程序.
捕获异常的唯一方法是使用try/catch块包围我的DoWork处理程序代码.
是否误解了RunWorkerCompletedEventArgs.Error属性?是不是因为获得了BackgroundWorker捕获的异常?
Codesample:
static BackgroundWorker w = new BackgroundWorker();
w.DoWork += new DoWorkEventHandler(w_DoWork);
w.RunWorkerCompleted +=
new RunWorkerCompletedEventHandler(w_RunWorkerCompleted);
w.RunWorkerAsync();
static void w_DoWork(object sender, DoWorkEventArgs e)
{
MyClass m = new MyClass();
w.result = m.Compute();
}
static void w_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
HandleException(e.Error);
}
/* result related code */
}
static void HandleException(Exception e)
{
ExceptionPolicy.HandleException(e, "MyPolicy");
}
Run Code Online (Sandbox Code Playgroud)
上面的示例导致我的控制台应用程序终止.vs2010输出绝对没有写入(只有默认输出).
那么问题出在哪里?
//编辑:此代码段用于捕获库的异常.
static void w_DoWork(object sender, DoWorkEventArgs e)
{
try
{ …Run Code Online (Sandbox Code Playgroud) c# multithreading enterprise-library exception backgroundworker
我遇到了HtmlHelper,RadioButtonFor和我模型中的枚举问题.我有一个强类型视图,我希望复选框切换我的枚举属性.
Enum.cs
public enum Values{
Value1,
Value2
}
Run Code Online (Sandbox Code Playgroud)
Model.cs
public class Model{
public Values MyProp{ get; set; }
;
Run Code Online (Sandbox Code Playgroud)
View.cshtml
@Html.RadioButtonFor(model => model.MyPropi, Values.Values1)
Run Code Online (Sandbox Code Playgroud)
Controller.cs
public ActionResult WizardFirstStep()
{
var model = new Model();
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
如果我在控制器中设置MyProperty值,则按预期检查RadioButton.但是在发送到下一个向导步骤后,将模型作为参数,该属性未设置.
如果它能帮助你理解我的意思:如果它是C#和WPF我将使用IValueConverter.
顺便说一句:我使用HtmlHelper.ActionLink将模型送到控制器.
提前致谢