使用c#、VS2005。网2.0.(XP32位),这是一个它应用程序,被称为VBA addin(.xla)通过互操作的图书馆。这个程序已经存在了一段时间和正常工作时将会编制和执行的其他任何地方比我的开发机。在开发它的硬盘崩溃(在调试和运行的物体)与"未经处理的异常在0x...在EXCEL.EXE:0x...违反读的位置0x...

但是,这里的奇怪的部分:

第一种方法,在我的接口工作的罚款。所有其他方法的崩溃,如上。这里是一个近似的代码:

[Guid("123Fooetc...")]
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface IBar
    {
        [DispId(1)]
         void ThisOneWorksFine(Excel.Workbook ActiveWorkBook);

         [DispId(2)]
         string Crash1(Excel.Workbook ActiveWorkBook);

         [DispId(3)]
         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
     }

    [Guid("345Fooetc..")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("MyNameSpace.MyClass")]    
    public class MyClass : IBar
    {
        public void ThisOneWorksFine(Excel.Workbook ActiveWorkBook)
        {...}

         string Crash1(Excel.Workbook ActiveWorkBook);
        {...}

         int Crash2(Excel.Workbook activeWorkBook, Excel.Range target, string someStr);
        {...}

    }

这似乎是某种环境的事情。注册chundered?可能是代码错误的,但它的工作的现其他地方。

有帮助吗?

解决方案

我有问题,在这种情况下,与办公室在2003年的过去。有些事情是有帮助:

  • 安装办公室2003年Service Pack2停止一些崩溃这件事发生时关闭。

  • 安装办公室2003年的服务包3修复了一个错误使用XP风格在VSTO2005应用程序(不你的情况这里的)

  • 运行的Excel VBA CodeCleaner http://www.appspro.com/Utilities/CodeCleaner.htm 定期帮助防止随机的崩溃。

  • 访问Excel对象从多个线程将是狡猾的,所以我希望你不会这样做。

如果你有可能你也可以尝试开一情况,与微软PSS。他们是很好的如果你能够重现的问题。在大多数情况下,这种事情是一个错误,所以你不会被控为它:)

其他提示

你的开发机器是Win64吗?如果你将构建平台设置为x86,我的win64版本的应用程序就会出现问题。

您的开发计算机是否运行与其他计算机不同的Office版本?我知道PIA有所不同。因此,如果您正在开发Office 2003并在Office 2007上进行测试(反之亦然),那么您将遇到问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top