小编Til*_*lak的帖子

从任何线程中捕获未处理的异常

编辑

这个问题的答案在哪里有用,谢谢我感谢帮助:)但我最终使用:http://code.msdn.microsoft.com/windowsdesktop/Handling-Unhandled-47492d0b#content


原始问题:

我想在应用程序崩溃时显示错误消息.

目前我有:

App.xaml:

<Application x:Class="WpfApplication5.App"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      DispatcherUnhandledException="App_DispatcherUnhandledException"  // <----------------
      StartupUri="MainWindow.xaml">
    <Application.Resources>             
    </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

代码隐藏App.xaml:

namespace WpfApplication5
{        
    public partial class App : Application
    {
        private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
        {
            MessageBox.Show("Caught Unhandled Exception!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当主线程发生错误时,该解决方案很有效.现在我的问题是如何能够捕获在不同线程上发生的错误?

换句话说:当我按下此按钮时,我能够捕获异常:( App_DispatcherUnhandledException被调用!)

    private void button1_Click(object sender, RoutedEventArgs e)
    {            
        int.Parse("lkjdsf");
    }
Run Code Online (Sandbox Code Playgroud)

但是我无法捕捉到这个异常:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Task.Factory.StartNew(() =>
        {
            int.Parse("lkjdsf");
        });
    }
Run Code Online (Sandbox Code Playgroud)

无论它们是否发生在主线程上,我如何能够捕获所有异常?

.net c# wpf exception unhandled-exception

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

在调试之前运行批处理脚本

我想在每次启动程序进行调试之前运行批处理脚本.

对于构建事件,使用预构建事件,构建后事件来实现此类功能.

对于实际调试,我找不到任何预调试,后调试事件.

如何实现这种情况?

我正在使用VS2008,.net framework 3.5,c#应用程序.

我反对在应用程序中创建一些可以启动外部批处理文件的额外代码行的想法.

.net c# post-build-event visual-studio-2008 pre-build-event

9
推荐指数
1
解决办法
6559
查看次数

DbContext和RejectChanges

我正在使用RIA服务,其中ObjectContext有RejectChanges()方法.但是,我现在正在桌面应用程序中使用EF 4.4,我找不到该方法.所以,我的问题是:在我允许用户对收集进行批量CrUD操作的场景中,我将如何恢复所有更改?我可以继续重新创建Context并再次获取数据,但如果我需要将更改恢复为1-2个实体,那么这听起来非常不必要.

那么,拒绝变更的最佳方法是什么?而且,我们如何知道上下文是否正在做某事(IsBusy)?

entity-framework

9
推荐指数
2
解决办法
9920
查看次数

计时器如何在.NET中工作?

我用C#编写了一个控制台应用程序,我的代码是这样的:

 while(true)
 {
 //do some stuff
     System.Threading.Thread.Sleep(60000)
 }
Run Code Online (Sandbox Code Playgroud)

我注意到我的应用程序的内存使用量大约是14k而"休眠".但后来我引用了System.Windows.Forms并使用了计时器,我发现内存使用率大幅下降.

我的问题是,在没有使用那么多内存的情况下,每隔几秒钟执行某项操作的正确方法是什么?

.net c# multithreading timer

9
推荐指数
1
解决办法
6562
查看次数

ClientBase不实现IDisposable成员

如果Dispose()方法声明不可见/声明,System.ServiceModel.ClientBase抽象类如何实现IDisposable接口?

如果我尝试做同样的事我得到一个错误,无法编译

abstract class ATeste : IDisposable
{
}
Run Code Online (Sandbox Code Playgroud)

'ATeste'没有实现接口成员'System.IDisposable.Dispose()'

我正在使用VS 2010和Framework 4.0.

检查ClientBase声明:

    // Summary:
//     Provides the base implementation used to create Windows Communication Foundation
//     (WCF) client objects that can call services.
//
// Type parameters:
//   TChannel:
//     The channel to be used to connect to the service.
public abstract class ClientBase<TChannel> : ICommunicationObject, IDisposable where TChannel : class
{
    // Summary:
    //     Initializes a new instance of the System.ServiceModel.ClientBase<TChannel>
    //     class using the default target …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf idisposable c#-4.0

9
推荐指数
2
解决办法
6799
查看次数

为什么WPF中需要AutomationProperties

根据我的理解,AutomationProperties可用于识别UI自动化客户端的控件名称.

我想了解需要创建单独的自动化属性集,而不是使用x:Name用于相同的目的.

.net wpf ui-automation

8
推荐指数
1
解决办法
3961
查看次数

使用LINQ拆分数组

我有一个像这样的单维集合:

[1,2,4,5.....n]
Run Code Online (Sandbox Code Playgroud)

我想在这样的二维集合中转换该集合:

[[1,2,3],
[4,5,6],
...]
Run Code Online (Sandbox Code Playgroud)

基本上我想分组或拆分,如果你想要的话,数组是'n'成员

我可以用一个foreach语句来做,但我目前正在学习LINQ,所以不是迭代遍历所有元素并手动创建一个新数组我想使用LINQ功能(如果适用)

有没有LINQ函数来帮助我完成这个?

我在思考,GroupBy或者SelectMany我不知道他们是否会帮助我,但他们可能会

任何帮助将真正欣赏它=):**

.net c# linq arrays linq-to-objects

8
推荐指数
2
解决办法
5811
查看次数

创建一个事件以监视变量的变化

我们只说我有:

public Boolean booleanValue;

public bool someMethod(string value)
{
   // Do some work in here.
   return booleanValue = true;
}
Run Code Online (Sandbox Code Playgroud)

如何创建一个在booleanValue发生更改时触发的事件处理程序?可能吗?

.net c# event-handling inotifypropertychanged microsoft-metro

8
推荐指数
2
解决办法
3万
查看次数

分组相同类型的集合C#

我有一组不同的对象,我想知道我是否可以创建分组相同类型对象的集合.我不知道是否有一个方法与linq或类似的东西.

List<Object> list = new List<Object>();
Object1 obj1 =  new Object1();
Object2 obj2 =  new Object2();
Object1 obj3 =  new Object1();
Object3 obj4 =  new Object3();
Object3 obj5 =  new Object3();

list.Add(obj1);
list.Add(obj2);
list.Add(obj3);
list.Add(obj4);
list.Add(obj5);
Run Code Online (Sandbox Code Playgroud)

我想要相同类型的新列表:

List<Object1> newList1 = method.GetAllObjectsFromListObject1 // Count = 2
List<Object2> newList2 = //GetAllObjectsFromListObject2 // Count = 1
List<Object3> newList3 = //GetAllObjectsFromListObject3 // Count = 2 
Run Code Online (Sandbox Code Playgroud)

.net c# linq select list

8
推荐指数
2
解决办法
3976
查看次数

为什么暴露类型必须为WinMD/WinRT组件密封?

VS编译器不允许为WINMD类型库创建密封的公开类型.

为什么要放置此限制?(我知道密封类型的优点,我的问题是关于Win RT组件).

.net sealed windows-8 windows-runtime winrt-xaml

7
推荐指数
1
解决办法
1672
查看次数