MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB endlos Find ToListAsync

Die Lösung des Problems besteht, wie Alex freundlicherweise betonte, darin, die FillCourseList zu erstellen auch asynchron. Dadurch kann das Programm weiter ausgeführt werden, während die Daten aus der Datenbank geholt werden. Der blockierende Anruf, den ich zuvor hatte, war anscheinend die Ursache des Problems. Dies fügt die Notwendigkeit für Thread-Safe hinzu Anrufe jedoch zum Windows Form.

    private delegate void SetListCallback(List<Course> result);

    private async Task GetCourseList() {
        Task<List<Course>> courseTask = MongoDBController.GetCourses();
        List<Course> result = await courseTask.ConfigureAwait(false);

        // When finished, fill the listbox
        FillCourseList(result);
    }

    private void FillCourseList(List<Course> result) {
        // If the calling thread's ID doesn't match the creating thread's ID
        // Invoke this method on the correct thread via the delegate
        if (this.listBox_overview_vakken.InvokeRequired) {
            SetListCallback d = new SetListCallback(FillCourseList);
            this.Invoke(d, result);
        } else {
            foreach (Course s in result) {
                listBox_overview_vakken.Items.Add(s);
            }
        }
    }