首页 > 解决方案 > 在一定时间后停止执行任务的简单方法(Xamarin.Android)

问题描述

单击按钮时,我想打开一个ProgressDialogtask在执行 a 之前显示的,但我希望能够停止任务,即使它在一定时间后还没有完成。我在互联网上看到了很多解决方案,但它们很长。我想知道是否有更简单的方法。

这是我的On Button Click活动:

private async void Btn_Click(object sender, System.EventArgs e)
{

    var mDialog = new ProgressDialog(this);
    mDialog.SetMessage("Loading data...");
    mDialog.SetCancelable(false);
    mDialog.Show();

    CancellationTokenSource cts = new CancellationTokenSource();
    cts.CancelAfter(5000);

    Task<int> task = new Task<int>(Foo, cts.Token);
    task.Start();

    int integer = await task;

    mDialog.Dismiss();

    txtView.Text = integer.ToString();


}

这是我将在任务中执行的方法:

public int Foo()
{
    System.Threading.Thread.Sleep(10000);
    return 100;
}

5th second是否可以在不更改我刚刚粘贴的代码的情况下在任务执行时停止任务,例如只将一些时间或对象传递给任务的构造函数,并且也不创建Foo()方法async

标签: timetaskexecution

解决方案


你可以试试

步骤 1. 添加计时器

    Timer _timer = new Timer {Interval = 5000};
                        _timer.Elapsed += OnTimeEvent;
                        _timer.Start();

步骤2.取消定时器事件的任务

    private void OnTimeEvent(object sender, ElapsedEventArgs e)
    {
            cts .Cancel();
    }

推荐阅读