在TPL任务运行时如何显示iOS网络指示器?

在TPL任务运行时如何显示iOS网络指示器?,第1张

概述在与服务器API交谈时,我大量使用任务并行库. 我想显示iOS网络指示器,而这些任务当前正在运行. 我该怎么做? 我创建了这个类,将NetworkActivityIndi​​catorVisible包装成一对进入/离开方法. public static class NetworkIndicator{ static int _counter; public static void 在与服务器API交谈时,我大量使用任务并行库.
我想显示iOS网络指示器,而这些任务当前正在运行.

我该怎么做?

解决方法 我创建了这个类,将NetworkActivityIndi​​catorVisible包装成一对进入/离开方法.
public static class NetworkIndicator{    static int _counter;    public static voID Enteractivity ()    {        Interlocked.Increment (ref _counter);        Refreshindicator ();    }    public static voID LeaveActivity ()    {        Interlocked.Decrement (ref _counter);        Refreshindicator ();    }    public static voID AttachToTask (Task task)    {        if (task.IsCanceled || task.IsCanceled || task.IsFaulted)            return;        Enteractivity ();        task.ContinueWith (t => {            LeaveActivity ();        });    }    static voID Refreshindicator ()    {        UIApplication.SharedApplication.NetworkActivityIndicatorVisible =            (_counter > 0);    }}

然后我为方便起见添加了两个扩展方法:

public static class TaskExtensions{    public static Task WithNetworkIndicator (this Task task)    {        NetworkIndicator.AttachToTask (task);        return task;    }    public static Task<TResult> WithNetworkIndicator<TResult> (this Task<TResult> task)    {        NetworkIndicator.AttachToTask (task);        return task;    }}

我是如何包装它的:

var task = API.queryNotifications (AuthManager.CurrentProfile.ID,NotificationType.All,until,cached)    .WithNetworkIndicator ();

然后我像往常一样使用任务.

总结

以上是内存溢出为你收集整理的在TPL任务运行时如何显示iOS网络指示器?全部内容,希望文章能够帮你解决在TPL任务运行时如何显示iOS网络指示器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1102125.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存