-2
我想在后台执行任务而不冻结主用户界面。但是,我在使用C#中的匿名函数Task.Run()时遇到了一些问题,因为它似乎不执行代码。我认为我的实施可能不正确。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范围
设置断点并使用调试程序检查a)执行是否完全到达循环,以及b)列表是否包含元素。此外,构造函数可能不是创建线程的最佳位置。使用Load事件或(第一个)激活事件。 – dlatikay
'可能'是特权问题,请尝试在主线程上运行'InitializePdf();'以确保它使用'Task.Run(...)'探测' – YukiNyaa
它在主线程上运行时效果很好 –