WCF 서비스 라이브러리에서이 스레드를 실행하고 있습니다.Task.Factory.StartNew는 상위 스레드에 종속적입니까?
아래 코드는 메서드가 끝날 때 실행됩니다. 사용자가 WCF에서 클라이언트로의 출력에 영향을주지 않는 백그라운드 프로세스가 완료 될 때까지 기다리는 것을 원하지 않기 때문에이 작업을 수행합니다.
내가 지금 가지고있는 문제는 내가 그 스레드를 실행하고 클라이언트가 응답을 얻으면 부모 스레드가 죽는다는 것입니다. 이 스레드도 죽이고. 부모 스레드가이 스레드가 완료 될 때까지 기다렸다가 나머지 작업을 수행하도록하려면 어떻게해야합니까? 한마디로
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> sampleDict = getPopulatedDictionary();
var result = run(sampleDict);
}
public static int run(Dictionary<string, string> sampleDict_)
{
PerformCalculations(sampleDict_);
if (sampleDict_.Keys.Count > 10)
{
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
backgroundprocess(sampleDict_);
});
}
//after returning i still want it to run
return sampleDict_.Keys.Count;
}
private static void backgroundprocess(Dictionary<string,string> dict)
{
foreach (var k in dict.Keys)
{
dict[k] = new Random().Next(2666).ToString();
}
}
}
, 난이 방법은 스레드 킥오프 및 반환에 값 X를 이동하지만 여전히 값을 반환 후에 완료 스레드를 기다려야합니다.
작업 적용의 경우 훨씬 더 자세한 가치 반환 프로세스 주문이 필요합니다. 제발, synchronons의 호출을 고려하십시오 :) –