Ich möchte eine Aufgabe im Hintergrund ausführen, ohne die Hauptbenutzeroberfläche zu blockieren. Allerdings habe ich ein Problem mit Task.Run() mit anonymer Funktion in C#, weil es scheint, als ob es den Code nicht ausführt. Ich denke, dass meine Implementierung falsch ist.Task.Run() in C# führt einige Teile nicht aus
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();
});
}
ich glaube, das Problem ist in foreach Umfang
Legen Sie einen Haltepunkt fest und verwenden Sie den Debugger, um zu überprüfen, ob die Ausführung a) die Schleife überhaupt erreicht und b) die Liste Elemente enthält. Der Konstruktor ist möglicherweise auch nicht der beste Ort zum Erstellen des Threads. Verwenden Sie das Load-Ereignis oder das (erste) Activate-Ereignis. – dlatikay
'Might' sein Privileg-Problem, versuchen Sie 'InitializePdf();' auf Haupt-Thread um sicherzustellen, dass es mit 'Task.Run (...)' Probem. – YukiNyaa
Es funktioniert perfekt, wenn es auf dem Haupt-Thread –