xamarin.forms - 运行任务而不杀死
问题描述
我正在尝试实现一个功能,用户可以简单地单击下载按钮,并且可以在下载仍在运行时进入他/她希望的任何页面,并且它不应该停止。
我正在使用 xamarin 形式。
有什么办法可以做到这一点,请提出建议或任何参考,因为我找不到相同的。
解决方案
由于该类App
在应用程序运行时始终存在于内存中,因此我们可以将其Task
放入App
.
简单任务
//App
public async void DoSomething()
{
await Task.Delay(30000);
}
// in specific page
string result = await (App.Current as App).DoSomething();
有返回值的任务
//App
public async Task<string> DoSomething()
{
await Task.Delay(30000);
return "123";
}
// in specific page
string result = await (App.Current as App).DoSomething();
如果您不想将代码放入App
,我们可以在其中创建一个额外的类App
来处理。
//App
private MyTask _myTask;
public MyTask myTask
{
get
{
return _myTask ?? new MyTask();
}
}
//MyTask
public class MyTask
{
public async Task<string> DoSomething()
{
await Task.Delay(30000);
return "123";
}
}
//in specific page
string result = await (App.Current as App).myTask.DoSomething();
推荐阅读
- javascript - 如何在我的网站中创建这个复杂的动画,并使其具有响应性?
- matlab - 将函数句柄传递给 Matlab 中的其他函数时,如何保留函数句柄的参数数量?
- r - 如果选项卡是从服务器端呈现的,Shinydashboard 书签不会为活动选项卡添加书签
- node.js - 填充对象数组中的键
- c# - 如何在 C# 中实现 IInternetSecurityManager.ProcessUrlAction 和 URLPOLICY_QUERY?
- reactjs - 如何映射数组,并使用 react-hooks 更改状态异步
- reactjs - React 组件在 typescript 中引用自己的 DOM 元素
- mysql - 除了向导将 xls 表导入 mysql Workbench 之外,还有其他方法吗?
- c# - 如何提供“对象”并将其传递给视图模型库?
- c# - Autofac 中的装饰器和属性注入