使用Task.Run()和ConfigureAwait(false)在另一个线程中运行CPU绑定代码。
示例代码:
public async Task DoAsync()
{
// some asynchronous operations
int result = 0;
await Task.Run(() =>
{
// CPU-bound code
for (int i = 0; i < 1000000000; i++)
{
result += i;
}
}).ConfigureAwait(false);
// more asynchronous operations
return result;
}
在上面的示例中,CPU绑定代码在Task.Run()中运行,并使用ConfigureAwait(false)来避免线程上下文切换的开销。这样,await-async链将不会在CPU绑定代码上被阻塞,并且可以在此期间异步地执行其他操作。最后,CPU绑定操作的结果将被返回。