MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB trouver sans fin ToListAsync

La solution au problème, comme Alex l'a gentiment souligné, est de créer la FillCourseList asynchrone aussi. Cela permet au programme de continuer à s'exécuter pendant que les données sont extraites de la base de données. L'appel de blocage que j'ai eu auparavant était apparemment la cause du problème. Cela ajoute le besoin de thread-safe appels au formulaire Windows cependant.

    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);
            }
        }
    }