나는 작업 병렬 라이브러리를 사용하여 화재를 구현하고 기능을 잊어 버리려고합니다. Task.Factory.StartNew
에 대한 인라인 호출을 사용하면 모든 것이 예상대로 작동합니다. 그러나 Task.Factory.StartNew
호출을 별도의 클래스로 이동하여 로깅, 오류 처리 등을 추가 할 수 있으며 코드를 복제하지 않고 앞으로 더 나은 스레딩 클래스 등의 코드를 업그레이드 할 수 있으며 .NET Framework에 추가됩니다. .TPL 화재 및 별도의 클래스를 사용하여 잊어
다음은 내가 통과 할 것으로 예상되는 단위 테스트이지만, 그렇지 않습니다. 이 작업을 수행하는 방법을 파악하는 데 도움을 주시면 감사하겠습니다.
[TestFixture]
public class ThreadingServiceFixture
{
public static bool methodFired = false;
[Test]
public void CanFireAndForgetWithThreadingService()
{
try
{
var service = new ThreadingService();
service.FireAndForget(() => methodFired = true);
var endTime = DateTime.Now.AddSeconds(1);
while(DateTime.Now < endTime)
{
//wait
}
Assert.IsTrue(methodFired == true);
}
finally
{
methodFired = false;
}
}
}
public class ThreadingService
{
public Task FireAndForget(Action action)
{
return Task.Factory.StartNew(() => action);
}
}
또는 'StartNew (action)'. – svick
@svick - true :) –