arten Sie, bis BackgroundWorker beendet ist, und beenden Sie dann die Konsolenanwendun

Ich habe eine Beispielkonsolenanwendung geschrieben, um Backgroundworker anhand eines der hier in Stackoverflow veröffentlichten Beispiele zu testen. Ich habe einen Backgroundworker, der mit der Hauptmethode beginnt, aber mitten in der Operation endet, wenn ich die Eingabetaste drücke, weil ich in der Hauptmethode eine console.readkey geschrieben habe. Aber ich möchte, dass es wartet, bis der Backgroundworker die Arbeit beendet hat, und dann die Anwendung beendet. Das ist mein Code.

class Program
{
    private static BackgroundWorker worker = new BackgroundWorker();
    private event EventHandler BackgroundWorkFinished;

    static void Main(string[] args)
    {
        worker.DoWork += worker_DoWork;
        worker.RunWorkerCompleted += worker_RunWorkerCompleted;
        worker.ProgressChanged += worker_ProgressChanged;
        worker.WorkerReportsProgress = true;
        worker.WorkerSupportsCancellation = true;

        Console.WriteLine("Starting Application...");

        worker.RunWorkerAsync();
        Console.ReadKey();
    }

    static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        Console.WriteLine(e.ProgressPercentage.ToString());
    }

    static void worker_DoWork(object sender, DoWorkEventArgs e)
    {
        Console.WriteLine("Starting to do some work now...");
        int i;
        for (i = 1; i < 10; i++)
        {
            Thread.Sleep(1000);
            worker.ReportProgress(Convert.ToInt32((100.0 * i) / 10));
        }

        e.Result = i;
    }

    static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        Console.WriteLine("Value Of i = " + e.Result.ToString());
        Console.WriteLine("Done now...");
    }
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage