[英]Create, store and retrieve dynamic data with C#
我有多個動作同時運行。 動作1完成后-依次執行動作Nr.2、3,然后1或9或9或10或7...。
我需要:
存儲我根據操作/活動獲得的數據。
當相同的操作繼續時,檢索此數據!
我可以確定動作:
這是我的想象:
啟動程序。
第一步是檢查新活動的數據是否存在-因此,我們獲取ID並進行檢查。
由於這是我們的新操作/第一個操作/活動,因此沒有任何過去的數據,因此,在操作結束時,我們創建了新數據並將其保存到某種動態存儲中。
字符串[,] ID123 =新字符串[2,3] {{“ 120”,“ 200”,“#ffc90e”},{“ 380”,“ 200”,“#22b14c”}};
動作1完成后,動作2開始。實際上,我們的操作與第3頁中的操作相同。
字符串[,] ID456789 =新字符串[2,3] {{“” 10“,” 5“,”#40“},{” 6“,” 8“,”#80“}};
現在又是活動1! 我們通過唯一ID進行識別 。 這次,如果我們搜索現有數據,我們將發現:
字符串[,] ID123 =新字符串[2,3] {{“ 120”,“ 200”,“#ffc90e”},{“ 380”,“ 200”,“#22b14c”}};
現在,我需要進行一些編輯,然后 添加新值 。 繼續。
我想到的最簡單的解決方案之一是-簡單地創建一個名為“ 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.