小编cst*_*ler的帖子

BackgroundWorker异常处理

我正在使用以下组件:

  • 图书馆(抛出异常)
  • 测试我的日志记录的测试控制台
  • 企业库异常处理应用程序块
  • 企业库日志记录应用程序块

我正在使用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

10
推荐指数
1
解决办法
2万
查看次数

带有枚举的MVC3 RadioButtonFor

我遇到了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将模型送到控制器.

提前致谢

.net c# asp.net asp.net-mvc asp.net-mvc-3

6
推荐指数
1
解决办法
6660
查看次数