我们有一些代码在两个.NET版本中表现不同: * 3.0.30618(最新的.NET 3.0版本) * 3.0.04506(.NET 3.0 RTM)
它在RTM版本中不起作用。我们将问题跟踪到对system.windows.threading.dispatcher.BeginInvoke的调用。通过的代表从未跑过。
解决此问题的任何提示或建议?
答案 0 :(得分:1)
我强烈怀疑这是代码中某处的错误,即使 是原始.NET 3.0与更高版本之间的差异。
我建议你像其他任何问题一样处理它:将代码减少到最低限度以显示问题。那么它应该是相对清楚的,它是一个框架错误还是你自己的代码中的错误。
答案 1 :(得分:1)
发现问题。
使用.NET 3.0(3.0.04506),BeginInvoke有以下重载:
使用3.0 SP2(3.0.30618)时,添加了以下内容。
在使用RTM版本的.NET的计算机上运行时,由于该方法尚未存在, 抛出了一个MissingMethod异常,因此从未执行过委托。
现在解决方案是使用“旧”重载:Dispatcher.BeginInvoke(DispatcherPriority, Delegate);
现在,这真的很糟糕。没有人能够使用新的重载并在晚上睡觉。 现在来寻找为什么异常被无声地处理......
谢谢大家!
答案 2 :(得分:0)
RTM是框架的早期版本。这意味着它并不完全稳定,并且这很可能是一个错误。考虑到.NET 3.0在发布形式中存在多长时间,我对解决这个“问题”的建议很简单就是更新.NET。
忽略这一点,但我会留下答案本身,以便评论存活下来。