我需要确定一个线程是否是另一个线程的子代。
下面是我尝试做的事情的一个过于简化的示例,但是基本上我需要确定一个任务是否是另一个任务的子代。
如果我有一个可以启动几个任务的函数...
_task1 = FuncA();
_task2 = FuncA();
在该函数中,它将启动另一个任务
public async Task FuncA()
{
// do something
await Task.Delay(500, CancellationToken.None).ConfigureAwait(false);
// then call the other function
await FuncB().ConfigureAwait(false);
}
public async Task FuncB()
{
// now check for the 'parent'
if( IsChildTask(_task1) ) // <--- something similar
{
// child of first task
}
}
我知道当前的thread id
将会更改,(因为异步/等待)
是否可以判断当前任务/上下文/线程是否是另一个线程的子代?
答案 0 :(得分:0)
最简单的解决方案,只需告诉谁是呼叫者
private string task1Name = "task1";
private string task2Name = "task2";
_task1 = FuncA(task1Name );
_task2 = FuncA(task2Name );
public async Task FuncA(sting taskName)
{
// do something
await Task.Delay(500, CancellationToken.None).ConfigureAwait(false);
// then call the other function
await FuncB(taskName).ConfigureAwait(false);
}
public async Task FuncB(string parentName)
{
// now check for the 'parent'
if( parentName == task1Name ) // <--- something similar
{
// child of first task
}
}