[英]Run a code only once in Uwp
我正在創建一個Uwp應用程序,只要滿足特定條件並且僅一次向用戶顯示一次通知,現在可以在文件檢查類型庫的另一個項目中定義執行此功能的函數。 CS和我在后台任務項目和另一個uwp類型項目中調用此函數。
嘗試方法:
經典方法:
代碼://在類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";
}
但是直到應用程序運行之前,它仍然可以正常工作,但是當應用程序關閉並再次打開時,變量的值再次初始化為true。 有什么解決方法嗎?謝謝。
通過使用applicationdata類將狀態保存到本地磁盤。 需要更多背景
你最好的選擇可能是保持前一或當前狀態( 這取決於你如何看待它 )到一個XML配置文件或應用程序數據的容器。
請參閱以下文檔,以參考ApplicationDataContainer本地設置的存儲。
啟動應用程序后,可以檢查該值並讀取該值以適當地聲明該變量。 基本上是每次通知用戶時-在您想要更新該配置文件以確保知道該用戶已被通知之后立即進行。
您不應該在每次啟動應用程序時初始化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";
}
看來您是在屬性/字段聲明中對其進行初始化,因此它始終是正確的。 這是我的實現,用於檢查是否在給定設備上同步數據。 檢查是否為空(在首次運行應用程序時),將其初始化為應設置的值,然后相應地設置應用程序數據。 如果不是,則檢索當前數據並相應地設置本地應用程序信息。 我當然不是專業人士,但這似乎完全符合預期。
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.