Win8 global::System.Diagnostics.Debugger.Break()
2013-12-13 14:58
351 查看
今天工作的时候发现如果在win8页面的构造函数中添加很多控件时会出错,这个错误捕捉不到,程序会跳到,
就是往前台的画布中添加1000按钮
#endif #ifDEBUG&&!DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION UnhandledException+=(sender,e)=> { if(global::System.Diagnostics.Debugger.IsAttached)global::System.Diagnostics.Debugger.Break(); }; #endif } }
就不走了,如果我们继续的话,就会停止。
我在构造函数中
for(inti=0;i<5000;i++)
{
Buttonbtn=newButton();
btn.Width=100;
btn.Height=100;
btn.Content=i.ToString();
this.canvas.Children.Add(btn);
}
就是往前台的画布中添加1000按钮
后来实验发现,当我们在主线程中做很浪费时间的事时,可能会出现上述情况。
解决方案
不要在构造函数中,写浪费时间的操作,
我们可以
this.Loaded+=MainPage_Loaded;写loaded事件
然后使用this.Dispatcher.RunAsync,防止阻塞主线程
完整代码如下
publicsealedpartialclassMainPage:Page
{
publicMainPage()
{
this.InitializeComponent();
this.Loaded+=MainPage_Loaded;
}
voidMainPage_Loaded(objectsender,RoutedEventArgse)
{
init();
}
///<summary>
///在此页将要在Frame中显示时进行调用。
///</summary>
///<paramname="e">描述如何访问此页的事件数据。Parameter
///属性通常用于配置页。</param>
protectedoverridevoidOnNavigatedTo(NavigationEventArgse)
{
}
privatevoidinit()
{
this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,()=>
{
for(inti=0;i<2000;i++)
{
Buttonbtn=newButton();
btn.Width=100;
btn.Height=100;
btn.Content=i.ToString();
this.canvas.Children.Add(btn);
}
});
}
}
相关文章推荐
- UWP 程序抛出异常时总是跳到“global::System.Diagnostics.Debugger.Break();”的解决办法
- WP7 页面导航报错 跳到System.Diagnostics.Debugger.Break
- 学习点滴积累之System.Diagnostics.DebuggerStepThrough
- 学习点滴积累之System.Diagnostics.DebuggerStepThrough
- <System.Diagnostics.DebuggerStepThrough()>
- win8 iis8 发布wcf服务,诡异的Could not load type System.ServiceModel.Activation.HttpModule
- How to use System.Diagnostics.Process correctly
- System.Diagnostics.Process.Start的妙用
- Win8学习总结之"给定的 System.Uri 无法转换为 Windows.Foundation.Uri"问题
- System.Diagnostics.Process 执行.EXE
- System.Diagnostics.Process.Start的妙用
- Oracle Concepts - SGA System Global Area
- System.Diagnostics.Debug和System.Diagnostics.Trace 【转】
- 小技巧:使用System.Diagnostics.Debug.Write("");输出结果
- 使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量
- System.Diagnostics.Stopwatch 获取执行时间
- GNU GLOBAL source code tag system
- 使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量
- Win8/8.1如何获取System权限以删除文件
- using System.Diagnostics 命名空间