2011-09-13 77 views
0
public static class clsCounter 
{ 
    static int count; 

    public static int Counter 
    { 
     get { return count; } 
     set { count = value; } 
    } 
} 

以上是用於記錄數字的靜態類。未能更新靜態屬性

另外,我有一個VS2010解決方案中的兩個項目,其中一個是類庫。在其中一個類中,我得到了使用clsCounter的以下代碼。現在

if (clsCounter.Counter == 0) 
    countIES++; 
else 
    countIES = 0; 

,在其他項目中,我設置了一些新的價值觀clsCounter

clsCounter.Counter = 50; 

然而,出於某種原因,我不能clsCounter.Counter設置爲50,因此我總是countIES++。代碼對我來說看起來沒問題,我不知道它有什麼問題?誰能幫忙?

謝謝。

編輯:

我不知道是否有某種內部做項目的範圍與解決方案?

溶液結構

  • ExcelAddIn

    • Form1.cs的=>(clsCounter.Counter = 50)
    • ...
  • ClassLibrary

    • clsCounter =>(靜態類)
    • ...

編輯2:

clsCounter.Counter = 50;backgroundworker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)事件實際運行。這可能是一個可能的問題?

編輯3:

我已經上傳,這似乎是能夠重現同樣的問題的示例項目。這裏是共享鏈接:=>http://www.4shared.com/folder/sInyNWyi/_online.html

我想在這裏做的是在按下按鈕'set value'後按值填充單元格Other case。靜態類和UDF可以在類庫中找到。

請注意,爲了能夠在excel插件中使用= testFunc(),需要在自動化服務器列表中找到它並啓用它。所以,只要進入文件 - >選項 - > Addin->在管理加載在 - >點擊GO->西門子自動化> Ebale ClassLibrary1.UDF

也請檢查選項「註冊爲COM Interop」已啓用或不啓動調試器之前。找到它,去ClassLibrary1屬性 - >生成 - >在輸出,檢查註冊COM互操作

+2

不清楚哪些項目的代碼是。 –

+0

您可以嘗試創建具有相同行爲的最小(但完整)示例嗎? – svick

+2

有沒有可能'clsCounter'被定義在多個地方? –

回答

0

最後,我想我找到了一個解決方法,儘管它與靜態無關。我很喜歡在網絡應用中使用cookie的想法。

同樣,所有我需要做的是:

存儲在臨時文本文件中的值,通過在「設置值」按鈕單擊事件處理程序做

System.IO.File.WriteAllText(@"C:\countIESValue.txt", value); 

每當我從上面的文本文件需要它並讀取存儲的值,並將其分配給本地變量。

if(System.IO.File.Exists(@"C:\countIESValue.txt")) 
{ 
    string val = System.IO.File.ReadAllText(@"C:\countIESValue.txt"); 
} 

該文本文件也可以在完成處理後刪除。通過這種方式,我不必擔心任何範圍或應用程序域問題,但需要寫入文件的權限。我很高興它爲我工作很好。

0

以下行添加到您的靜態屬性:

public static class clsCounter 
{ 
    private static int count; 

    public static int Counter 
    { 
     get { 
       Debug.WriteLine("Counter viewed"); 
       return count; 
      } 
     set { 
       Debug.WriteLine("Counter Changed from {0} to {1}", count, value); 
       count = value; 
      } 
    } 
} 

然後你可以看你的調試器,並設置在櫃檯上,這將使你找出代碼的哪些部分是不恰當的修改你的計數器斷點。靜態計數器在被訪問之前會「在某個時間」被初始化。我會說你正在設置計數器,並且在讀取它之前,某個地方會立即增加計數器。

+0

當我點擊按鈕「設置值」時,我收到了消息,說「計數器從0改變到了50」。但是當您再次在單元格中輸入formula = testFunc()時,結果仍然保持不變。嗯,這真的很奇怪。我想知道你是否可以下載源代碼並運行它? – woodykiddy

+0

你有消息。所以你現在可以解決你的問題。如果它正在增加,那麼你會看到發生的地方。如果有人修改你的「計數器」,那麼你會看到一個調試消息。 – Spence