簡體   English   中英

在Uwp中僅運行一次代碼

[英]Run a code only once in Uwp

我正在創建一個Uwp應用程序,只要滿足特定條件並且僅一次向用戶顯示一次通知,現在可以在文件檢查類型庫的另一個項目中定義執行此功能的函數。 CS和我在后台任務項目和另一個uwp類型項目中調用此函數。

嘗試方法:

經典方法:

  1. 聲明一個布爾變量說count和初始化值為true。
  2. 當條件匹配並顯示通知以將計數設置為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";                       
}

但是直到應用程序運行之前,它仍然可以正常工作,但是當應用程序關閉並再次打開時,變量的值再次初始化為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM