VB6로 작성된 EXE 용 C# DLL 플러그인을 만들고 있습니다. EXE 소스에 액세스 할 수 없습니다. DLL 자체가 작동하고 EXE와 통신합니다. 때로는 시간이 오래 걸립니다 C# COM interop을 사용하여 SQL 쿼리 중에 응답하는 UI에 가장 적합한 방법
- 사용자 문제 EXE에 명령을 다음 DLL에있는 함수를 호출 : 여기 은 이벤트의 과정이다
DLL은 전달 된 개체의 함수를 호출하여 응답합니다. DLL 함수 자체는 아무 것도 반환하지 않습니다
public void DoCommand(object CommandSettings) { //ObjectVB6 is my custom class to allow easy calling of COM methods and properties ObjectVB6 CS = new ObjectVB6(CommandSettings); ... //process data CS.CallMethod("MyReply", args); }
내 문제가합니다 (DLL)에서 긴 쿼리 중에 EXE의 UI가 얼어 것입니다.
이것을 방지하는 가장 좋은 방법은 무엇입니까? 비동기 MySQL 쿼리를 사용해 보았습니다.이 쿼리는 좋지 않았으며 보호 된 메모리 문제가있는 여러 스레드를 사용하여 시도했습니다.
제공 할 수있는 조언은 정말 좋습니다. 며칠 동안이 문제를 해결하려고 노력했습니다. 감사.
새 스레드에 권한이 없기 때문에 새 스레드가 EXE에서 전달 된 개체에 액세스 할 수 없으므로 다음 오류가 발생합니다. "보호 된 메모리를 읽거나 쓰려고 시도합니다. 이것은 종종 다른 메모리가 손상되었음을 나타냅니다 . " – Lynxy