wpf 在C#中同步P2P操作的逻辑[已关闭]

avwztpqn  于 12个月前  发布在  C#
关注(0)|答案(1)|浏览(109)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

2个月前关闭。
Improve this question
在我的WPF应用程序中,我有一个类ObjectBuffer和一个方法PopulateAsync(),它工作得很好:缓冲区在另一个线程上被填充,最终将准备好用于程序中的其他地方。调用者代码ButtonPress1在视图模型中看起来像这样:

Task.Run(() => ObjectBuffer.PopulateAsync());

我希望另一个UI事件ButtonPress2等待缓冲区填充。理想情况下,它在视图模型中看起来像这样:

other work...
await ObjectBuffer.HasFinished(); // wait until population from ButtonPress1 has finished
ObjectBuffer.DoWorkWithData();
other work...

也许这整个思路是不理想的,即。也许任务本身应该以某种方式表示在ObjectBuffer中?

oxf4rvwz

oxf4rvwz1#

如果我正确地遵循了你的代码,并假设ObjectBuffer.PopulateAsync()返回一个Task(它应该返回),那么你可以做以下事情:
在你的窗口中有一个字段:

Task populateAsyncTask;

按钮1:

populateAsyncTask = ObjectBuffer.PopulateAsync();

这将使任务运行,但不会等待它。然后,在ButtonPress2中,您可以执行以下操作:

other work...
await populateAsyncTask; // wait until population from ButtonPress1 has finished
ObjectBuffer.DoWorkWithData();
other work.

我省略了populateAsyncTask是否为null的检查。

相关问题