Setup 등의 메소드에서는 async 키워드를 사용할 수 없다.
t.Task.Wait() 메소드를 호출해서 강제로 대기해야 한다.


Posted by pjc0247
TAG C#, NUnit


try~catch 로 처리되지 못하고 밖으로 흘러내린 익셉션을 잡아내는 법


유니티가 메인 스레드에서 발생하는 익셉션은 유니티 내부의 try~catch로 잡아내는 듯 하다.

그 결과 유니티 메인 스레드와, 외부 스레드의 익셉션을 모두 잡아내기 위해서는 위 코드와 같이 기이한 구조로 걸러내야 한다.


Posted by pjc0247


Thread.Abort가 일어나면 작업이 중간에 끊기게 된다,

만약 해당 스레드가 전역적인 상태(위의 예제에서는 g)를 건드리는 코드가 포함되었을 경우에는 상태가 망가져 프로그램 전체가 오작동하게 되는 원인이 될 수 있다.


이를 방지하기 위해서는 빈 try{} 블록을 만들고, 밑에 finally에 코드를 작성하면 항상 다 돌거나, 아예 안돌거나가 보장되는 코드블럭을 작성할 수 있다. (프로세스 종료와 같은 상황 때문에 100%는 아니지만)


Thread.Abort() 자체를 쓰는 일이 적기 때문에 실제로 쓰게 될 일은 없을듯


Posted by pjc0247
TAG C#, thread