С задачами можно сделать что-то вроде этого:Изменить выполнение потока текущего метода
public async Task SomeMethod()
{
// [A] Here I am in the caller thread
await OtherMethod().ConfigureAwait(false);
// [B] Here I am in some other thread
}
private async Task OtherMethod()
{
// Something here
}
Где в точках [A] и [B], вы можете быть в разных потоках. Можно ли сделать что-то похожее с асинхронным и ждать ключевых слов при выборе потока, он будет переключаться? Как так:
public void SomeMethod()
{
// [A] Here I am in the caller thread
ChangeThread();
// [B] Here I am in some other thread
}
private void ChangeThread()
{
Thread thread = new Thread(???);
// ???
}
Я знаю, что это возможно с делегатами, но можно переключиться нить внутри метода, возможно, с изменением текущего потока назад, когда метод заканчивается? Если нет, возможно ли создать что-то, используя async/await, который может изменить поток, но я контролирую, к какому потоку он переключится (например, поток пользовательского интерфейса с помощью Control.Invoke)?
Что вы пытаетесь сделать и почему? Почему вы хотите «сменить поток» (нет такой вещи)? Вы столкнулись с проблемой и думаете, что «изменение потоков» - это решение? Что означает «какая нить»? Почему бы не использовать пул потоков или просто использовать 'Task.Run'? –
@PanagiotisKanavos его спрашивают от чистого любопытства и не представляют собой проблему реальной жизни. –