.NET 4.6
带有“异步”的带有await的调用方法与没有“异步”的相同方法之间有什么区别?
protected Task<MyObject<T>> MyMethod1<T>(string parameter)
{
return CallDb();
}
protected async Task<MyObject<T>> MyMethod2<T>(string parameter)
{
return await CallDb();
}
// Calling these
public async Task<IEnumerable<string>>(string parameter)
{
return await MyMethod1<string>(parameter);
// Any difference?
return await MyMethod2<string>(parameter);
}
public Task<string> CallDb()
{
}
Run Code Online (Sandbox Code Playgroud) 我正在创建一个位于 DLL 中且无法修改的类的实例。它加载图像需要很长时间,这会冻结 WinForms UI。
我可以在新线程上实例化该类吗?
var images = new AppImages(); // This to execute on new thread?
var cboData = new List<string>();
foreach(var image in images)
{
cboData.Add(image);
}
comboBox.DataSource = cboData;
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用
private void My()
{
var images = ThreadPool.QueueUserWorkItem(GetAppImages);
var cboData = new List<string>();
foreach(var image in images)
{
cboData.Add(image);
}
comboBox.DataSource = cboData;
}
private AppImages GetAppImages()
{
return new AppImages();
}
Run Code Online (Sandbox Code Playgroud)
但 threadPool 不返回任何值,它只是执行代码,我需要新实例稍后在代码中使用它。
另外,我可以在新线程中调用整个逻辑,因为存在 UI 元素(例如组合框)。