发现blend4的一个导致崩溃的BUG!!!
正在用VS2010 + BLEND4做东东,因为我是VS上写代码,BLEND上搞界面,在VS2010写完代码后,转到BLEND上突然崩溃了,重新打开BLEND4,甚至重启系统都不行。
错误页面:
错误输出
Microsoft® Expression® crash report:
Date: 2010-08-24 17-16-43
User: Thinkpad@THINKPAD-PC
Application Version: 4.0.1000.1000
Operating System Version: Microsoft Windows NT 6.1.7600.0
Common Language Runtime Version: 4.0.30319.1
System.UnauthorizedAccessException: Invalid cross-thread access.
在 MS.Internal.XcpImports.CheckThread()
在 MS.Internal.XcpImports.CreateObjectByTypeIndex(UInt32 typeIndex)
在 System.Windows.Threading.DispatcherTimer..ctor(UInt32 nativeTypeIndex)
在 System.Windows.Threading.DispatcherTimer..ctor()
在 System.Windows.Threading.Dispatcher..ctor()
在 System.Windows.Threading.Dispatcher.get_MainDispatcher()
在 System.Windows.DependencyObject.get_Dispatcher()
在 Vega.Toolbar.<.ctor>b__0(Object obj) 位置 ………………………….xaml.cs:行号 21
在 System.Threading._TimerCallback.TimerCallback_Context(Object state)
在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
在 System.Threading._TimerCallback.PerformTimerCallback(Object state)
由于在VS2010上没有问题,并且能够编译通过运行良好,所以是认定是Blend的问题,然后我删掉一些新加的代码,Blend就不崩溃了,最后我确认了发生问题的代码
难道是用我用了新潮的语法?我改成这样再试
依然崩溃,再试:
obj => { this.Dispatcher.BeginInvoke(() => this.txtTime.Text = DateTime.Now.ToLongTimeString()); }
), null, 0, 1000);
再再试:
{ this.Dispatcher.BeginInvoke(() => this.txtTime.Text = DateTime.Now.ToLongTimeString()); }
), null, 0, 1000);
我快崩溃了,再再再试:
{
this.Dispatcher.BeginInvoke(() => this.txtTime.Text = DateTime.Now.ToLongTimeString());
}), null, 0, 1000);
再再再再试
{
this.Dispatcher.BeginInvoke(delegate()
{
this.txtTime.Text = DateTime.Now.ToLongTimeString();
});
}), null, 0, 1000);
到这,我确定了,和lambda表达式没有关系,和匿名委托也应该没有关系,我还发现了一个细节,我注销掉这行代码也是没有问题的,但是恢复代码,一生成项目就崩溃,那么再再再再再试
new Timer(obj => this.Dispatcher.BeginInvoke(() => this.txtTime.Text = DateTime.Now.ToLongTimeString()), null, 1000, 1000);
这么改就好了,我想Blend是要把编译的dll预运行一下,但是如果Timer立即执行,Blend还没准备好,出现了多线程的异常。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架