C#中的Task.Run()不会执行某些部分

时间:2017-07-19 09:19:03

标签: c# multithreading asynchronous multitasking

我想在后台执行任务而不冻结主用户界面。但是,我在C#中使用带有匿名函数的Task.Run()时遇到了一些问题,因为它似乎没有执行代码。我认为我的实施可能不正确。

private  List<string> GetPdfList
{
    get
    {
        return File.Directory.GetFiles(PDF_FILE_DIRECTORY);
    }
}

private  void InitializePdf()
{
    if (GetPdfList.Count > 0)
    {
        foreach (var pdf in GetPdfList)
        {
            var converter = new PdfConvertor();
            var format = ImageFormat.Png;
            converter.Convert(pdf, TempFolder, format);
        }

    }
}


public  MainForm()
{
    InitializeComponent();
    Task.Run(() =>
    {
        InitializePdf();
    });
}

我认为问题出在 foreach范围

1 个答案:

答案 0 :(得分:-6)

Task.Run()创建任务,但不执行任务。 为了做你想做的事,你应该等待异步事件中的任务结果。 见Async loading for winforms