【发布时间】:2017-01-11 09:01:29
【问题描述】:
我正在开发一个聊天应用程序。加载聊天消息并且消息可见 5 秒钟后,我想向服务器发送读取确认。到目前为止,这是我想出的:
public async void RefreshLocalData()
{
// some async code to load the messages
if (_selectedChat.countNewMessages > 0)
{
Device.StartTimer(TimeSpan.FromSeconds(5), SendReadConfirmation);
}
}
当RefreshLocalData() 被调用时,我知道用户选择了另一个聊天或当前聊天收到了新消息。所以当RefreshLocalData()被调用时,我必须取消当前的定时器来开始一个新的。
我必须取消计时器的另一种情况是当我导航到另一个Page 时。这没问题,因为发生这种情况时,整个ViewModel 都会被释放。
使用上面的代码,如果再次调用RefreshLocalData(),但声明的5秒TimeSpan还没有结束,则该方法仍在执行中。
有没有办法取消定时器(如果再次调用RefreshLocalData())?
【问题讨论】:
标签: xamarin timer xamarin.forms