-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
它在主線程上運行時效果很好 –