将参数或参数传递给Uwp中的后台任务

时间:2016-11-10 09:02:00

标签: c# uwp win-universal-app

我正在创建一个uwp应用程序,其中我想从用户说从文本框中获取一些数据,然后将其传递给后台任务。但是当我试图将项目引用添加到后台任务时,我得到一个循环引用错误。那么有没有办法传递参数可能是运行函数或其他任何东西的重载。 提前谢谢。

2 个答案:

答案 0 :(得分:5)

Romasz已经完美地解释了它,但在您的情况下,您可以通过以下步骤从文本框中获取用户数据:

1.在MainPage.xaml.cs(或您的xaml页面)

中声明
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["user"] = User.Text;

2.现在使用这些

获取BackgroundTask.cs中的数据
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
string user = localSettings.Values["user"].ToString();

此处,变量用户可以从主页面获得您想要的texbox数据。

注意:我假设您已将文本框命名为“用户”

答案 1 :(得分:4)

没有直接的方法可以做你想要的,每个进程(例如 BTask UI )都有自己的内存,并且无法像这样访问它。

为了这个目的,您需要某种代理 - 为了简短的沟通,我认为您可以使用LocalSettings,这应该可以正常工作 - 尽管在复杂对象的情况下,您可能需要先将它们序列化。对于更高级的通信,您还可以考虑使用 LocalFolder 中的文件或其他可供所有进程访问的位置。

在某些情况下,可能存在进程同步(或访问共享资源,如文件)的问题 - 为此,存在用于全局同步的设计对象,例如。 Mutex EventWaitHanle