我正在构建一个连接到服务器的应用程序,这需要8秒钟才能完成,因此我决定同时启动一个加载屏幕窗口。
我希望加载屏幕显示一个在应用程序连接时旋转的旋转的车轮。
问题是当我尝试一下时,车轮会锁定并且不会旋转。原因是该应用程序正忙于连接到服务器,因此可以防止旋转。一旦应用程序成功连接,轮子就会开始旋转。
如果让它们异步运行,我担心等待时间会增加。因此,我想知道哪种最有效的方法可以使两个任务并行运行。
我正在使用mahapps进度环
答案 0 :(得分:0)
对于像您这样的情况,我强烈建议您看一下带有异步和等待的异步编程。
这是https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/的好资源
答案 1 :(得分:0)
异步和并行是两个不同的事物。在这种情况下,您要显示纺车并并行连接到服务器。这意味着您必须在显示转轮的UI线程之外的其他线程上连接到服务器。 UI线程无法同时更新轮子和同时连接到服务器。
在.NET中编写多线程和并行代码的首选方法是使用Task Parallel Library (TPL)。您可以使用C#5 / .NET Framework 4.5中引入的async
/ await
关键字来启动任务并等待它,如下所示:
spinningWheel.Visibility = Visibility.Visible;
await Task.Run(()=> { /* connect to the server here... */ });
spinningWheel.Visibility = Visibility.Collapsed; //the server is connected