0

在我的应用程序中,我将数据保存到我的数据库 (SQLite)。我不想阻止我的 UI,所以我将数据保存在不同的任务中

            await Task.Run(() => this.SaveTracks(books, filesCollection));

我从字典中获取带有数据的 TextBox

TextBox tmpTextBox = parseData["title_" + i] as TextBox;

当它不在不同的任务中时,它工作得很好,但是当我使用 Task.Run 设置时,我得到了我无法使用它的异常,因为我在不同的线程中调用了元素。如何通过在不同的任务中阻止我的 UI 并从主线程中的 UI 元素获取数据

4

2 回答 2

3

两种选择:

  • 拆分更大的操作,以便您的循环(我假设有一个循环)仍然在 UI 线程中执行,但每个单独的保存操作都是后台的单独任务
  • 在创建任务之前获取您需要的所有UI 信息,并捕获该信息,以便任务永远不需要访问 UI

无论哪种方式,结果都是一样的:您只能访问 UI 线程中的 UI 元素。

于 2012-11-12T17:52:53.637 回答
1

在启动任务之前获取TextBox.Text值并将该值作为参数传递。

于 2012-11-12T17:53:32.693 回答