在Uwp中只运行一次代码
我正在创建一个Uwp应用程序,我只需要向用户显示一次性通知,如果某个条件匹配并且只有一次。现在这个函数在另一个类型类库的项目n文件check.cs,我在后台任务项目和另一个uwp类型项目中调用此函数。在Uwp中只运行一次代码
尝试方法:
经典的方法:
- 声明一个布尔变量说计数以及初始化值为true。
- 当条件匹配并显示通知将计数设置为false时。因此现在通知不会再显示。
代码://在类check.cs
var one = true;
public static async Task Onetime()
{
if (x == 2 && one)
{
PopToast("Only once");
one = false;
}
}
守则app.xaml.cs构造:
内部功能var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["one"] = "true";
代码:
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
string value = localSettings.Values["one"].ToString();
if(x==2 && value=="true")
{
PopToast("Only once");
localSettings.Values["one"] = "false";
}
但它的问题工作正常,直到应用程序正在运行,但当应用程序关闭并重新打开价值变量e再次被初始化为真。 有没有解决方法?提前致谢。
它看起来就像你在一个属性/字段declaraion初始化,所以它永远是正确的。这是我的实现,用于检查是否在给定设备上同步数据。检查是否为null(在第一次应用程序运行时),如果是,则初始化它,然后相应地设置应用程序数据。如果不是,则检索当前数据并相应地设置本地应用信息。我当然不是专业人士,但这似乎完全按照预期工作。
object onedrive = localsettings.Values[_dataSyncSetting];
if (onedrive == null)
{
localsettings.Values[_dataSyncSetting] = true;
_isDataSyncEnabled = true;
_dataPolicy = _dataSync;
}
else
{
_isDataSyncEnabled = (Boolean)onedrive;
_dataPolicy = _isDataSyncEnabled ? _dataSync : _dataLocal;
}
编辑; _dataSyncSetting
是一个const string
在同一类中声明
你最好的选择可以是保持前一或当前状态(取决于你如何看待它)到一个XML配置文件或应用程序数据的容器。
请参阅以下documentation以引用ApplicationDataContainer本地设置的存储。
在应用程序启动时,可以检查并读入该值以适当地声明该变量。基本上每次用户都会收到通知 - 在您想要更新该配置文件后立即确认已知用户已收到通知。
感谢您的回复,但有没有这方面的任何样本,或者你可以给一个参考,以了解这一点。@ ChrisCruz – Uwpbeginner
请参阅我的编辑链接到适用于AppData存储使用情况的文档。 –
我试过这个,但我在哪里初始化值,因为无论我初始化它再次运行和值初始化为true。 – Uwpbeginner
每次应用程序启动时,您都不应该初始化App.xaml.cs
中的设置。
添加它只有一次,并检查设置是否实际上在Check
类存在:
const string key = "one";
var localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
if (x == 2 && !localSettings.Values.ContainsKey(key))
{
PopToast("Only once");
localSettings.Values[key] = "false";
}
我不相信你想要设置值为“真”与构造函数,因为这将始终设置值首先。你的方式是想读取那里的价值。 –
那么我应该在哪里初始化它? – Uwpbeginner