Programm bleibt einfach stehen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von Westerwälder.

    Programm bleibt einfach stehen

    Hallo

    seit einiger Zeit (2 Monaten) kommt es vor, dass mein Programm einfriert. Ohne Fehlermeldung und obwohl ich zu diesem Zeitpunkt nicht mit dem Programm arbeite.
    Da es auf drei Rechner installiert ist, schliesse ich einen Hardwarefehler aus.
    Beim Programmieren bekomme ich hin und wieder folgende Fehlermeldung in der ActiveLog:

    Spoiler anzeigen

    System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.DeferredContentFrameworkElementFactory.CreateElement(IDeferredQuickInfoContent deferredContent)
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.QuickInfoDisplayDeferredContentConverter.CreateFrameworkElement(IDeferredQuickInfoContent deferredContent, DeferredContentFrameworkElementFactory factory)
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.DeferredContentFrameworkElementFactory.CreateElement(IDeferredQuickInfoContent deferredContent)
    bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.QuickInfo.Presentation.QuickInfoPresenter.QuickInfoPresenterSession.AugmentQuickInfoSession(IList`1 quickInfoContent, ITrackingSpan& applicableToSpan)
    bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.QuickInfo.Presentation.QuickInfoPresenter.QuickInfoSource.AugmentQuickInfoSession(IQuickInfoSession session, IList`1 quickInfoContent, ITrackingSpan& applicableToSpan)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.LegacyQuickInfoSource.AugmentQuickInfoSession(IAsyncQuickInfoSession session, IList`1 content, ITrackingSpan& applicableToSpan)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.<TryComputeContentFromLegacySourceAsync>d__45.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
    bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
    bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.<ComputeSourceContentAsync>d__44.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
    bei Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)
    --- Ende der internen Ausnahmestapelüberwachung ---
    ---> (Interne Ausnahme #0) System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.DeferredContentFrameworkElementFactory.CreateElement(IDeferredQuickInfoContent deferredContent)
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.QuickInfoDisplayDeferredContentConverter.CreateFrameworkElement(IDeferredQuickInfoContent deferredContent, DeferredContentFrameworkElementFactory factory)
    bei Microsoft.CodeAnalysis.Editor.QuickInfo.DeferredContentFrameworkElementFactory.CreateElement(IDeferredQuickInfoContent deferredContent)
    bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.QuickInfo.Presentation.QuickInfoPresenter.QuickInfoPresenterSession.AugmentQuickInfoSession(IList`1 quickInfoContent, ITrackingSpan& applicableToSpan)
    bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.QuickInfo.Presentation.QuickInfoPresenter.QuickInfoSource.AugmentQuickInfoSession(IQuickInfoSession session, IList`1 quickInfoContent, ITrackingSpan& applicableToSpan)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.LegacyQuickInfoSource.AugmentQuickInfoSession(IAsyncQuickInfoSession session, IList`1 content, ITrackingSpan& applicableToSpan)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.<TryComputeContentFromLegacySourceAsync>d__45.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
    bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
    bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
    bei Microsoft.VisualStudio.Language.Intellisense.Implementation.AsyncQuickInfoSession.<ComputeSourceContentAsync>d__44.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
    bei Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)<---



    Habe vor einiger Zeit die Media Klasse aus WPF hinzugefügt. Kann es da eventl. zu Konflikten kommen?
    Weiss nicht wie ich den Fehler finden soll, da er nur sporatisch auftritt.
    Gruß Markus
    @petaod Nö.
    @Westerwälder Nimm die Debug und gib die *.pdb dazu.
    Wenn es dann knallt, bekommst Du eine präzise Fehlermeldung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Westerwälder schrieb:

    Wie meinst du das Rod?
    Läuft das Programm direkt im Debug-Verzeichnis der Projektmappe?
    Wahrscheinlich nicht, denn Du hast keine Zeileninformationen in Deiner Fehlermeldung.
    Kopiere neben die Exe die *.PDB-Datei(en) aus demselben Verzeichnis.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Denke das ist nun schon der richtige Ansatz.
    Lasse das Programm seit heute Mittag in der IDE laufen (mit allen Aufgaben, die eigentlich beim Start aus der IDE nicht erfolgen), und dies bisher fehlerfrei.
    Was gehört eigentlich in das Programmverzeichnis (als nicht Debug-Ordner).

    *.exe
    Icons
    *.dll ?

    Versuche das nun mit den *.PDB-Dateien
    Gruß Markus
    @Westerwälder die Exe und alle erforderlichen DLLs.
    Weitere Dateien gehören in separate Verzeichnisse, z.B. ProgramData, UserData oder neben die Exe.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Westerwälder schrieb:

    Denke würde eine dll fehlen, wäre ein Programmstart nicht möglich.
    Das wird erst gemeldet, wenn darauf zugegriffen wird.
    Allerdings gibt es da eine signifikante Meldung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mein Programm startet mit Rechnerstart. Ist den ganzen Tag in Betrieb. Überwacht den eMail-Eingang und aktualisiert alle 4 Stunden die Wetteraussichten.
    Sicher kann es noch vieles mehr (4 Jahre Programmierzeit), aber dies ist ich sage mal, der Ruhezustand des Programmes.
    Dann plötzlich wird die Uhrzeit nicht mehr angezeigt und das Programm kann nur noch beendet werden.
    Gruß Markus
    @Westerwälder Habt Ihr kürzlich das Studio / das Framework / 32-64-Einstellungen oder so geändert?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Westerwälder schrieb:

    den PC
    Das Programm?
    Dann probierma x86.
    Was für fremde DLLs werden benötigt?
    Liegen die ebenfalls als x64 vor oder als x86?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also: 32-Bit-Rechner läuft,
    64-Bit-Rechner läuft nicht?

    RodFromGermany schrieb:

    Was für fremde DLLs werden benötigt?
    :?:

    Westerwälder schrieb:

    Kann leider nur AnyCpu wählen.
    Das genügt, wenn keine hardware-spezifischen DLLs verwendet werden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Laufen tun sie beide. Mein Sohn hat mir bisher noch von keinen Problemen berichtet.
    Wie gesagt, bei mir auf dem 64-bit kommt es auch nur sporadisch vor.

    Zwei Anwendung sind verschieden:
    A) AccsessDatabaseEngine und
    B) Devcon

    liegen aber in beiden Versionen vor.
    Gruß Markus

    Westerwälder schrieb:

    liegen aber in beiden Versionen vor.
    Das ist gut.
    Dann sollten wir die Projektmappe so umgestalten, dass Du explizit beide Versionen erstellen kannst.
    Bist Du bereit?
    Welche Studio-Version hast Du?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OK
    Visual Studio Community 2017 / Version 15.7.5

    Habe da schon Unterverzeichnisse in der Projektmappe (nicht Debug)

    VB.NET-Quellcode

    1. If Pfade.Plattform64 Then
    2. Me.DevconDatei = Pfade.Sonderpfade.System64 & "Devcon.exe"
    3. Else
    4. Me.DevconDatei = Pfade.Sonderpfade.System32 & "Devcon.exe"
    5. End If

    Gruß Markus

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Westerwälder“ ()

    @Westerwälder Das ist suboptimal.
    Das wird alles zur Compilezeit organisiert, nicht zur Laufzeit.
    Die Verzeichnisse sehen bei mir so aus:

    die Verteilung steht im PostBuild-Ereignis:

    und die Projektmappenkonfiguration sieht so aus:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke Dir für die Darstellung.

    A) AccsessDatabaseEngine und
    B) Devcon

    sind beide keine DLL's, sondern .exe
    A) wird einmalig installiert
    B) wird als exe aufgerufen

    Nach Dursicht aller DLL's sind wohl keine unterschiedliche Version (32/64) erforderlich.
    Gruß Markus