簡體   English   中英

無法更新靜態屬性

[英]failed to update a static property

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++ 該代碼對我來說還不錯,我不知道它怎么了? 有人可以幫忙嗎?

謝謝。

編輯:

我想知道這是否與vs解決方案中的項目范圍有關?

解決方案結構

  • ExcelAddIn

    • Form1.cs =>(clsCounter.Counter = 50)
    • ...
  • 類庫

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

編輯2:

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

編輯3:

我上載了一個似乎能夠重現相同問題的示例項目。 這是共享的鏈接:=> http://www.4shared.com/folder/sInyNWyi/_online.html

我在這里想要做的是用一個值填充一個單元格, Other case在按下“設置值”按鈕之后。 靜態類和UDF可以在類庫中找到。

請注意,為了能夠在excel插件中使用= testFunc() ,需要在自動化服務器列表中找到並啟用它。 因此,只需轉到File-> Option-> Addin-> Un Manage Manage-in-> Click GO-> Automation-> Ebale ClassLibrary1.UDF

在啟動調試器之前,還請檢查是否已啟用“ 注冊COM互操作 ”選項。 要找到它,請轉到ClassLibrary1屬性-> Build->在Output下,選中Register for COM interop

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

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; 
            }
    }
}

然后,您可以監視調試器並在計數器上設置斷點,這將使您找出代碼的哪一部分在不當地修改了計數器。 靜態計數器將在訪問之前“某些時候”初始化。 我要說的是,您正在設置計數器,並且某些地方在讀取之前會立即將其遞增。

最后,我認為我找到了一種解決方法,盡管它與靜態無關。 我有點受在Web應用程序中使用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");
}

完成處理后,也可以刪除該文本文件。 這樣,盡管需要寫入文件的權限,但我不必擔心任何范圍或應用程序域問題。 我很高興它對我來說很正常。

暫無
暫無

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

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