Hintergrund -Thread blockiert den UI -Thread [geschlossen]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Hintergrund -Thread blockiert den UI -Thread [geschlossen]

Post by Anonymous »

Ich habe ein Formular mit einer Taste, die eine Methode ausführt. In dieser Methode werden einige UI -Updates durchgeführt, und dann wird eine neue Methode genannt, die einen neuen Thread für die Ausführung erstellt und startet. Schließlich wird eine andere Methode ausgeführt, bei der die Updates für Reinigungs- und Bildschirmaktualisierungen durchgeführt werden. Die Gewindemethode kann bis zu zehn Minuten dauern, um zu vervollständigen - daher der zweite Thread. Schon früh wird ein Timer gestartet, der die verstrichenen Sekunden auf dem Bildschirm aktualisieren und dann gestoppt werden sollte. (Timer_start () und Timer_stop ()) < /p>
Wenn ausgeführt wird, funktioniert alles außer der Zeitanzeige, bis der zweite Thread abgeschlossen ist, und dann hört der Timer nicht auf, bis das Formular geschlossen wird. Tia. < /P>

Code: Select all

private void btnAction_Click(object sender, EventArgs e)
{
bool Analyze = (cboAnalyzePriceList.SelectedIndex == 0 ? true : false);
bool Preview = (cboPreviewOrSave.SelectedIndex == 0 ? true : false);

Timer_Start();
(rowCnt, FileMatch, ImportId, srcAnalysis) = ProcessActionButton(Analyze, Preview);

PreviewOrSave(Preview);
}

private (int, bool, string, DataTable) ProcessActionButton(bool Analyze, bool Preview)
{
SetupProcessForm(Analyze, Preview);

Thread thProcess = new Thread(() =>
{ (rowCnt, FileMatch, ImportId, srcAnalysis) = mtdUpdateData.ImportValidateAnalyze(ImportId, PriceListFile, MappingName, Analyze, Preview); } );
thProcess.Start();

(rowCnt, ImportId)  = FinalizeProcessForm(rowCnt, FileMatch, srcAnalysis);
tbRowCount_Hdr.Text = rowCnt.ToString("N0");
tbImportId_Hdr.Text = ImportId;

Timer_Stop();
return (rowCnt, FileMatch, ImportId, srcAnalysis);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post