Συμπτώματα
Η επίκληση της μεθόδου STA COM έχει ως αποτέλεσμα 0x8001010E RPC_E_WRONG_THREAD μετά την εγκατάσταση του .NET Framework 4.8.
Λύσεις
Μέθοδος 1: Μεταβλητή περιβάλλοντος
Ορισμός της ακόλουθης μεταβλητής περιβάλλοντος:COMPLUS_DisableCCWSupportIAgileObject=1
Αυτή η μέθοδος επηρεάζει οποιοδήποτε περιβάλλον στο οποίο μεταβιβάζονται αυτές οι μεταβλητές περιβάλλοντος. Αυτή μπορεί να είναι μόνο μία περίοδος λειτουργίας κονσόλας ή μπορεί να επηρεάσει ολόκληρο τον υπολογιστή εάν ορίσετε τη μεταβλητή περιβάλλοντος καθολικά. Το όνομα της μεταβλητής περιβάλλοντος δεν κάνει διάκριση πεζών-κεφαλαίων.
Μέθοδος 2: Μητρώο
Χρησιμοποιώντας τον Επεξεργαστή Μητρώου (regedit.exe), βρείτε ένα από τα παρακάτω δευτερεύοντα κλειδιά:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework
Για διεργασίες 32 bit σε συστήματα x64, χρησιμοποιήστε:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework
Στη συνέχεια, προσθέστε τα εξής:Όνομα τιμής: DisableCCWSupportIAgileObject Type: DWORD (32 bit) Τιμή (ονομάζεται επίσης REG_WORD) Τιμή: 1
Μπορείτε να χρησιμοποιήσετε το εργαλείο REG.EXE των Windows για να προσθέσετε αυτή την τιμή από μια γραμμή εντολών ή ένα περιβάλλον δέσμης ενεργειών. Για παράδειγμα:
reg add HKLM\SOFTWARE\Microsoft\. NETFramework /v DisableCCWSupportIAgileObject /t REG_DWORD /d 1
Σε αυτή την περίπτωση, χρησιμοποιείται το HKLM αντί για HKEY_LOCAL_MACHINE. Χρησιμοποιήστε reg add /? για να δείτε βοήθεια σχετικά με αυτήν τη σύνταξη. Το όνομα της τιμής μητρώου δεν κάνει διάκριση πεζών-κεφαλαίων.
Περισσότερες πληροφορίες
Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με αυτή την αλλαγή χρόνου εκτέλεσης 4.8 .NET Framework εδώ: https://learn.microsoft.com/en-us/dotnet/framework/migration-guide/runtime/4.7.2-4.8#net-interop-will-now-queryinterface-for-iagileobject-a-winrt-interface
Ισχύει για
Οι εφαρμογές που εκτελούνται σε .NET Framework 4.8 σε υποστηριζόμενες εκδόσεις των Windows.