При нажатии кнопки я хочу открыть ProgressDialog
, который будет отображаться до тех пор, пока не будет выполнено task
, но я хочу иметь возможность остановить задачу, даже если она не была выполнена через определенное количество времени.Я видел много решений в интернете, но они очень длинные.Я хочу знать, есть ли более простой способ.
вот мое 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