Ich habe ein Projekt, an dem ich gerade arbeite. Es ist ein C# WinForms-Projekt. Im Grunde genommen soll die Verwendung eine Datei.dat laden und diese Datei zum Exportieren in ein anderes Format, das einige Dateien erzeugt, verarbeiten. Das Problem beginnt, wenn ich eine Fortschrittsleiste aktualisieren muss, während die Exportfunktion ausgeführt wird, da der Methodenexport in einer anderen Klasse von einer anderen Assembly ist, da ich mein Projekt in 3 getrennt habe, habe ich eine DLL, die eine gängige Methode für eine Konsole ist App und Grafik-App, so kann ich den Methodenexport von der DLL nicht ändern, da die Konsolen-App von dieser Implementierung abhängt.Fortschrittsbalken während Exportdateien aktualisieren
Ich habe ein Formular, das eine Datei öffnen und klicken Sie auf Export-Schaltfläche, wenn ich auf Export klicken, erstellen Sie ein neues Formular und die Fortschrittsanzeige beginnt aktualisiert zu werden, während die Exportmethode funktioniert. In der Exportmethode kann ich keine weiteren Parameter hinzufügen, da die andere Klasse von der ursprünglichen Implementierung abhängt.
So muss ich wissen, wie Sie eine Fortschrittsanzeige aktualisieren, während Prozessdateien in Methode, jede Eingabedatei mehr als 1 Dateien generieren.
Meine Exportfunktion ist:
Dies ist in einer Klasse von einer Baugruppe:
public static void Export(File file, string output, string inputFile,BackgroundWorker worker)
{
//Other operations
//......
//
for (int m = 0; m < variable.Count; m++)
{
ExportoFile(varibel, output);
worker.ReportProgress(m + 1);
}
worker.CancelAsync();
}
Wie Sie sehen, jetzt habe ich das und auf diese Weise das Programm funktioniert.
Und das ist eine andere Klasse (Form) von anderen Montage:
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
var worker = sender as BackgroundWorker;
Exporter.Export(file, output, inputFile, worker);
}
void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// The progress percentage is a property of e
progressBar.Value = e.ProgressPercentage;
progressLabel.Text = ((100 * (e.ProgressPercentage))/size).ToString() +"%";
if (e.ProgressPercentage == size)
{
worker.CancelAsync();
this.Close();
}
}
Aus meiner Form I eine Background schaffen, dass aktualisiert den Fortschritt, wenn ich eine Datei exportieren. Aber ich brauche einen anderen Weg, um damit umzugehen, weil meine Exportmethode falsch ist. Ich muss keinen Worker als Parameter senden, da die ursprüngliche Methode nicht vorhanden ist und die andere Klasse von der ursprünglichen Implementierung abhängt.
Abschließend, wie kann ich eine Fortschrittsanzeige aktualisieren, während Dateien aus anderen Klassen in anderen Assembly exportieren, ohne meine Exportmethode zu ändern?
Aber ich kann das tun, ohne die Methode Export to public zu ändern? Die anderen Klassen rufen diese Methode statisch auf. – Tibo
Ihre Exportmethode war zuvor öffentlich. In deinem Code ist es immer noch öffentlich. Statisch und öffentlich hat keine Verbindung. – Sebi