여기 내 문제가 있습니다 : 내가 만든 관리되지 않는 DLL이 있습니다.이 DLL 함수 중 하나를 PInvoke를 사용하여 C# 코드에서 호출합니다. 특정 조건에서 dll 함수에서 function.How를 실행하는 스레드를 종료 할 수 있어야합니다. 이 바보 같은 질문이지만, 내가 제대로 이해하는 경우 :C# 스레드 내에서 관리되지 않는 DLL의 함수 실행
3
A
답변
3
사람, 위험합니다. 왜 스레드를 종료합니까? 통화를 마샬링하는 방법에 따라 소유하지 않은 스레드에있을 수 있습니다. 어느 쪽이든 최선의 방법은 스레드를 종료하고 관리되는 코드를 정상적으로 처리하도록 지정하는 것입니다. 네이티브 코드에서 스레드를 죽이지 마십시오.
3
스레딩에 관해서 나는 총 멍청한 놈이야 경우
죄송합니다, 당신의 상황은
(간결을위한 의사 코드를 사용하여)이 같다C#
==
Main()
{
StartNewThread(MyThread);
DoStuff();
}
MyThread()
{
UnmanagedDll.DoSomething();
}
Unmanaged DLL
=============
DoSomething()
{
// Does something here
}
맞습니까?
그렇다면 UnmanagedDll.DoSomething()에서 반환하면 UnmanagedDll.DoSomething() 호출 후 문이 없으면 호출 스레드가 종료됩니다. C# 프로그램으로 제어권을 되돌려주십시오.
귀하의 상황이 아닌 경우 자세한 내용을 제공해주십시오.
0
관리되지 않는 DLL 함수에서 특수 결과를 다시 전달하고 (특수 반환 값을 감지 한 경우) C#에서 스레드를 종료합니다. DLL에서 종료하는 것은 나에게 정말로 나쁜 생각처럼 들린다.
관련 문제
- 1. C#에서 런타임시 관리되지 않는 DLL의 함수 나열 #
- 2. 클라이언트 측 ASP에서 관리되지 않는 C++ 함수 실행 .Net C#
- 3. vs2008 관리되지 않는 DLL의 문제 게시
- 4. x64에서 관리되지 않는 vC++ dll의 x64로 변경하십시오.
- 5. 관리 DLL과 관리되지 않는 DLL의 차이점
- 6. 어떻게 관리되지 않는 C++ DLL의 이름을 강하게 지정합니까?
- 7. (관리되지 않는) C++
- 8. C++의 함수 내에서 어셈블리 실행
- 9. 내 보낸 된 관리되지 않는 C++ DLL
- 10. 깨끗한 관리되지 않는 메모리
- 11. 관리 코드에서 관리되지 않는 DLL 함수 호출 오류
- 12. AsyncTask의 doInBackground() 내에서 스레드 실행
- 13. .NET에서 관리되는 DLL의 관리되지 않는 클래스는 어떻게 사용합니까?
- 14. 관리되지 않는 DLL의 .NET 래퍼를 만드는 장단점은 무엇입니까?
- 15. ASP.NET 응용 프로그램에서 관리되지 않는 DLL의 LoadLibrary가 IntPtr.Zero를 반환합니다.
- 16. MMC (관리되지 않는 C++) 디버깅?
- 17. C++에서 관리되지 않는 DLL #
- 18. C#에서 관리되지 않는 C++ 클래스를 가져오고 사용하는 방법?
- 19. .NET에 대한 관리되지 않는 네이티브 C 코드
- 20. 관리되지 않는 C++ 클래스에서 Managed C++ 클래스를 파생시킬 수 있습니까?
- 21. 구조체 관리되지 않는 C 코드에 액세스
- 22. 관리되지 않는 C++ Win32 API 또는 C#?
- 23. C#의 관리되지 않는 C++ 클래스
- 24. C#에서 DllImport를 관리되지 않는 C++ 라이브러리
- 25. C++/cli가 관리되지 않는 코드에 위임합니다.
- 26. C++ 스레드 실행 시간
- 27. 관리되지 않는 C++ : 코드를 동적으로로드하는 방법?
- 28. VS2010과 관리되지 않는 Windows 서비스
- 29. 관리되는 C++의 관리되지 않는 C++ 템플릿이 잘못된 이미지를 던집니까?
- 30. dll의 함수 사용
다른 스레드에서 죽이기를 오래 실행중인 스레드가 있습니까? 또는 시작한 스레드를 정리하는 방법을 모르십니까? –
나는 잠재적으로 위험한 함수를 별도의 스레드에서 실행하여 주 스레드의 스택을 손상시키지 않습니다. 문제가 발생하면 주 스레드로 메시지를 전달하는 방법을 모르므로 손상된 스레드를 제거하십시오. –