2010-04-20 64 views
0

如果我有这样的当你停止VS调试器时会发生什么?

ContentRepository.Update(existing); 

即进入数据存储库中更新一些对象一条线,我在这个更新功能try..catch块这样的:

 string file = XmlProvider.DataStorePhysicalPath + o.GetType().Name + Path.DirectorySeparatorChar + o.Slug + ".xml"; 
     DataContractSerializer dcs = new DataContractSerializer(typeof (BaseContentObject)); 
     using (
      XmlDictionaryWriter myWriter = 
       XmlDictionaryWriter.CreateTextWriter(new FileStream(file, FileMode.Truncate, FileAccess.Write), 
                Encoding.UTF8)) 
     { 
      try 
      { 
       dcs.WriteObject(myWriter, o); 
       myWriter.Close(); 
      } 
      catch (Exception) 
      { 
       // if anything goes wrong, delete the created file 
       if (File.Exists(file)) 
        File.Delete(file); 
       if(myWriter.WriteState!=WriteState.Closed) 
        myWriter.Close(); 
      } 
     } 

那么为什么如果我在上面的行的调试会话中单击“停止”,Visual Studio会继续调用Update()吗?

例如,我通过按F10逐行进入该行,现在我在该行上显示为黄色,然后按“停止”。

显然发生了什么事,VS执行Update()方法并以某种方式发现出错的地方并进入“catch”并删除文件,这是错误的,因为我希望我的catch在有一个真正的例外不是当我调试一个程序,并强制停止它。

回答

0

这取决于调试器分离是否结束该过程。如果没有,那么该程序将继续运行。如果是这样,那么它不会。

+0

这是从ASP.NET MVC应用程序,它应该结束过程?目前,我的浏览器窗口保持打开状态。我没有这样配置,这是默认的。 – mare 2010-04-20 13:13:39

+0

@mare:在这里,当我将Firefox作为默认浏览器时,它不会结束这个过程。它用于IE。我认为这可能是一个设置的地方;但我通常更喜欢它*不会结束这个过程,所以我没有看过它。 – 2010-04-20 13:45:58

+0

我可以确认这是浏览器依赖于我的身边。 – mare 2010-04-26 17:49:29

相关问题