簡體   English   中英

使用C#創建,存儲和檢索動態數據

[英]Create, store and retrieve dynamic data with C#

我有多個動作同時運行。 動作1完成后-依次執行動作Nr.2、3,然后1或9或9或10或7...。

在此處輸入圖片說明

我需要:

  1. 存儲我根據操作/活動獲得的數據。

  2. 當相同的操作繼續時,檢索此數據!

我可以確定動作:

  • 通過唯一的ID

這是我的想象:

  1. 啟動程序。

  2. 第一步是檢查新活動的數據是否存在-因此,我們獲取ID並進行檢查。

  3. 由於這是我們的新操作/第一個操作/活動,因此沒有任何過去的數據,因此,在操作結束時,我們創建了新數據並將其保存到某種動態存儲中。

    字符串[,] ID123 =新字符串[2,3] {{“ 120”,“ 200”,“#ffc90e”},{“ 380”,“ 200”,“#22b14c”}};

  4. 動作1完成后,動作2開始。實際上,我們的操作與第3頁中的操作相同。

    字符串[,] ID456789 =新字符串[2,3] {{“” 10“,” 5“,”#40“},{” 6“,” 8“,”#80“}};

  5. 現在又是活動1! 我們通過唯一ID進行識別 這次,如果我們搜索現有數據,我們將發現:

    字符串[,] ID123 =新字符串[2,3] {{“ 120”,“ 200”,“#ffc90e”},{“ 380”,“ 200”,“#22b14c”}};

  6. 現在,我需要進行一些編輯,然后 添加新值 繼續。

我想到的最簡單的解決方案之一是-簡單地創建一個名為“ ID .txt”的臨時文件。 不幸的是,我將同時運行10-15個動作,因此這種方法不會像我將所有內容都記錄到內存中一樣快。. 問題是-我該怎么做? 的sql? 文本?

一些事實:

  • 不同活動的ID總是不同的

  • 我不知道確切的活動計數(介於10到15之間)

  • 我需要存儲一個數組類型的數據,即

string [,]數組:1、15、32、12

2,11,efg,0

5、9、5,abc

...

  • 類似的問題: C#中的動態數組

  • 我的代碼中會有一些條件會觸發“數據刪除”,操作有生命周期;)

目前尚不清楚您要在此處完成的任務,行動在何處以及如何進入該鏈,以及您需要如何應對。

至於跟蹤當前正在進行的操作,您需要的只是適當的並發性。 您可以使用.NET 4.0內置的多個對象,也可以創建自己的對象。 由於此數據是動態的,因此可能不應該保留該數據,除非您期望過程能夠在終止后能夠准確地從中斷處恢復。 因此,例如,您可以使用ConcurrentDictionary<string, string[,]>將存儲二維數組,該數組由ID字符串鍵控,該ID字符串在Dictionary中必須唯一(即使兩個ID的數組具有相同的值)尺寸和值)。 並發檢查是內置的,這意味着您可以讓多個線程對該字典執行多個操作,而不必擔心兩個兩個線程可能試圖同時讀取或寫入同一事物的“競爭條件”。

請注意,由於某種原因,當進程結束時,作為進程一部分的內存中的數據將不復存在。 如果您不希望發生這種情況,則可以有一個線程,其任務是將ConcurrentDictionary的內容持久保存到文件或數據庫中。 由於這是一個線程,因此從線程安全的數據集中讀取數據,因此可以大大避免文件寫入中的並發問題,因為只要ConcurrentDictionary中的一條記錄不依賴於另一條數據(您仍然可以處理其中一條的情況)記錄確實依賴於另一個記錄,但是它變得更加復雜)。 可以在執行其他操作期間,基於計時器或選擇滿足您需要的任何對象來“踢開”該線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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