小编st_*_*nov的帖子

呼叫同步和异步方法有什么不同吗?

.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)

c# async-await

1
推荐指数
1
解决办法
92
查看次数

在新线程上创建类的实例

我正在创建一个位于 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 元素(例如组合框)。

c# winforms

-1
推荐指数
1
解决办法
725
查看次数

标签 统计

c# ×2

async-await ×1

winforms ×1