【发布时间】:2011-09-13 07:59:46
【问题描述】:
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 解决方案中的项目范围有关?
解决方案结构
解决方案
-
Excel插件
- 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->Under Manage Add-in->点击 GO->Automation->Ebale ClassLibrary1.UDF
请在启动调试器之前检查“Register for COM interop”选项是否已启用。要找到它,请转到 ClassLibrary1 Property -> Build -> 在 Output 下,检查 Register for COM interop。
【问题讨论】:
-
不清楚这些代码在哪个项目中。
-
您能否尝试创建一个具有相同行为的最小(但完整)示例?
-
clsCounter是否有可能在多个地方定义? -
这些行可能运行在不同的线程上吗?
-
您确定引发了 RunWorkerCompleted 事件吗?