2010-11-20 3 views
1

스크립팅 제안을 위해 사용자가 사이트에 플러그인 (어셈블리)을 업로드하는 방법을 제공하고자합니다. mono.cecil을 통해 이러한 어셈블리를 분석하고 미리 정의 된 함수 목록에만 액세스를 제한 할 수 있지만 메모리 사용량, 실행 시간을 제한하고 스레드가이 리소스를 초과 작성하는 경우 스레드를 종료해야합니다..Net/mono에서 스레드의 메모리 사용 및 실행 시간을 제어하는 ​​방법은 무엇입니까?

프로파일 러 API에 의해 메모리 사용을 모니터 할 수 있다고 생각하지만, 보증을 통해 스레드를 중단 할 수있는 도구가 없다는 것을 알고 있습니다. 보증과 함께 스레드를 중단 할 수있는 방법이 있습니까? 아마도 모노를 임베딩하여 코드를 실행하고 응용 프로그램의 네이티브 부분에서 스레드의 실행을 제어 할 수 있습니까?

답변

1

ResetAbort()에 대한 플러그인 코드를 허용하지 않는 한 Thread.Abort()를 사용할 수 있습니다.

+0

스레드가 finally 블록에서 멈춘 경우 ResetAbort()를 사용하지 않아도 스레드를 중단 할 수 없으므로 해결책이 아닙니다. – rystsov

0

스레드 레벨 제어는 실용적이지 않았습니다. IMHO (과거에는 누구든지). 일반적으로 메모리 사용 또는 응용 프로그램 도메인 수준의 프로세스 수준 제어를 고려해야합니다.

+0

고맙지 만 msdn (http://msdn.microsoft.com/en-us/library/system.appdomain.unload.aspx)에 따르면 AppDomain.Unload를 호출하면 도메인의 스레드를 중단하고이 시도가 실패하면 시도합니다 도메인은 언로드되지 않습니다. – rystsov

+0

그런 다음 프로세스 수준 제어가 유일한 실행 가능한 옵션 인 것 같습니다. IE/Chrome이 웹 페이지 중단을 피하기 위해이 접근 방식을 사용하는 이유는 놀라운 일이 아닙니다. –

관련 문제