如何解决任务延迟后触发滚动事件 问题方法期待结果编辑
我试图避免在 ListView
滚动上多次调用以使用休息服务,但它似乎不起作用..
问题
滚动ListView
时,不断触发滚动事件,多次调用rest服务。
方法
期待
在调用服务后,busy
属性仍设置为 true 11 秒,因此即使触发滚动事件它也不会调用该服务,因为 busy
属性为 true。
结果
服务被调用一次,但在 11 秒后再次触发滚动事件并再次调用服务。
编辑
我开始滚动,并且事件被多次命中,因为每次 scroll-Y 值的变化都会触发该事件,导致调用服务 5 次(我想要调用服务 1 次)
例如:
请注意,初始滚动 y 值为 0。我滑动以滚动它。 假设滑动后滚动值为 5(事件被击中 5 次),因此我尝试解决问题是通过使用任务在单独的线程中调用服务,但发生的情况是事件被触发并运行任务调用该服务,并且因为它在不同的线程上运行,所以它会立即完成该事件(我的意思是我退出该事件),并且在 11 秒后该事件再次被击中,依此类推..
发生了什么
我想要的是调用其余服务 1 次,而不是 5 次。
private void Scrollview_Scrolled(object sender,ScrolledEventArgs e)
{
Task.Run(async () =>
{
if (IsBusy)
return;
IsBusy = true;
await _services.IDealsMService.GetMoreDealsAsync(param1,param2);
await Task.Delay(TimeSpan.FromSeconds(11));
}
}
解决方法
尝试:
bool IsBusy { get; set; } = false;
private async void Scrollview_Scrolled(object sender,ScrolledEventArgs e)
{
if (IsBusy)
return;
IsBusy = true;
await _services.IDealsMService.GetMoreDealsAsync(param1,param2);
await Task.Delay(TimeSpan.FromSeconds(11));
IsBusy = false;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。