2013-07-12 75 views
3

我想在同一個解決方案中的兩個項目之間共享一個屬性,所以我在一個帶有靜態屬性的單獨(第三個)項目中創建了一個簡單的靜態類。但是,當我將其設置在一個項目中時,當我嘗試從另一個項目獲取該屬性的值時,似乎不會發生更改。靜態屬性不會保持設置?

由於屬性是靜態的,不應該只有一個它的實例嗎?我已經調試過,賦值語句後的值確實設置了,爲什麼在其他項目中引用它時不適用? 下面的代碼:

namespace Shared 
    { 
     public static class Shared 
     { 
      public static string old { get; set; } 

     } 
    } 

賦值語句中的第一個項目

Shared.Shared.old = messageData.Items[0].DateTime; 

試圖在第二個項目進入產權

if (messageData.Items[0].DateTime.CompareTo(Shared.Shared.old) > 0) 
+0

這兩個項目都訪問在同一進程中運行的值,還是它們是分開的應用程序? –

+0

檢查調試,模塊中加載了多少副本。 – SLaks

+1

你在同一個過程中使用你的二進制文件嗎?如果不是,他們不應該回復相同的信息。 –

回答

8

靜態屬性有每個進程(技術上一個實例,根據AppDomain)。如果您試圖在兩個可執行文件之間共享它,每個進程都將獲得唯一的值。

如果要在兩個可執行文件之間進行通信,則需要使用某種形式的進程間通信,或者序列化爲某些外部源(文件系統,數據庫等)。

+0

感謝您的更新。我正要挑剔:) –

+0

啊,那會解釋它。是的,其中一個項目用於後臺任務,因此它將以不同的流程運行。無論如何分享他們之間的數據? – Orch

+0

@BrianRasmussen是的 - 它通常只是讓新開發者感到困惑,但我也不想在那裏出錯...... –