Domanda

Uso di c #, VS2005 e .NET 2.0. (XP 32 bit) Questa è un'app Winforms che viene chiamata da un componente aggiuntivo VBA (.xla) tramite le librerie Interop. Questa app è in circolazione da un po 'di tempo e funziona bene quando l'assemblaggio viene compilato ed eseguito in qualsiasi luogo diverso dalla mia macchina di sviluppo. Su dev si arresta in modo anomalo (nel debugger e solo eseguendo l'oggetto) con " Eccezione non gestita su 0x ... in EXCEL.EXE: 0x ... violazione lettura posizione 0x ...

Ma ecco la parte strana:

Il primo metodo nella mia interfaccia funziona bene. Tutti gli altri metodi vanno in crash come sopra. Ecco un'approssimazione del codice:

[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);
        {...}

    }

Sembra una specie di cosa ambientale. Registro chundered? Potrebbero essere bug di codice, ma funziona bene altrove.

È stato utile?

Soluzione

Ho avuto problemi in questo scenario con Office 2003 in passato. Alcune cose che hanno aiutato:

  • L'installazione di Office 2003 Service Pack 2 ha arrestato alcuni arresti anomali verificatisi durante la chiusura di Excel.

  • L'installazione di Office 2003 Service Pack 3 risolve un bug relativo all'utilizzo degli stili XP in un'applicazione VSTO2005 (qui non è il caso)

  • Esecuzione di Excel VBA CodeCleaner http://www.appspro.com/Utilities /CodeCleaner.htm aiuta periodicamente a prevenire arresti anomali casuali.

  • L'accesso agli oggetti di Excel da più thread sarebbe complicato, quindi spero che tu non lo stia facendo.

Se hai la possibilità, puoi anche provare ad aprire un caso con Microsoft PSS. Sono abbastanza buoni se riesci a riprodurre il problema. E nella maggior parte dei casi, questo genere di cose è un bug, quindi non ti verrà addebitato nulla :)

Altri suggerimenti

La tua macchina di sviluppo è Win64? Ho avuto problemi con le build di app win64 che vanno via se imposti la piattaforma di build su x86.

La tua macchina dev esegue una versione diversa di Office rispetto alle altre macchine? So che le PIA sono diverse. Quindi, se stai sviluppando su Office 2003 e testando su Office 2007 (o viceversa), ad esempio, incontrerai dei problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top