我在C#winforms项目中工作,我有一个用户控件,从工具条菜单中选择加载它.我有一个字典查找设置在用户控件的表单加载时发生,用于其他功能.此外,当我关闭用户控件时,我只是使用".Hide();" 方法.我注意到当我第一次加载用户控件时一切都很好,但是当我关闭它并选择再次打开它时,它第二次创建了一个新的对象实例,从而抛弃了我的字典查找.因此,我写了一些代码来试图解决这个问题.
我需要做的是以某种方式说如果用户控件的实例已经存在,则不要创建该对象的新实例.相反,只需再次使用户控件可见.因此,我编写了代码以试图实现此目的.当我第一次选择项目时,一切都很好.当我隐藏用户控件并尝试再次重新打开它时,没有任何反应.
以下是我为此目的编写的代码,它是在从工具条菜单中选择项目时发生的:
if (Controls.ContainsKey("CheckAvailUserControl"))
{
Controls["CheckAvailUserControl"].Dock = DockStyle.Fill;
Controls["CheckAvailUserControl"].Visible = true;
Controls["CheckAvailUserControl"].Show();
Controls["CheckAvailUserControl"].Refresh();
}
else
{
UserControl checkAvailUserControlLoad = new CheckAvailUserControl();
Controls.Add(checkAvailUserControlLoad);
checkAvailUserControlLoad.Dock = DockStyle.Fill;
checkAvailUserControlLoad.Visible = true;
checkAvailUserControlLoad.Show();
}
Run Code Online (Sandbox Code Playgroud)
当我在调试器中跟踪我的代码时,它实际上是在上面的if/else语句的正确部分.它只是在我第二次尝试加载它时才在屏幕上显示用户控件.
问题是:关闭后如何让用户控件正确加载,然后再从工具条菜单中选择它?
将列添加到现有表时,Oracle始终将列放在表的末尾.是否有可能告诉Oracle它应该出现在表中的哪个位置?如果是这样,怎么样?
关于我之前的问题,我需要检查一下将由Castle Windsor实例化的组件,在我的代码使用完之后是否可以进行垃圾回收.我在前一个问题的答案中尝试了这个建议,但它似乎没有按预期工作,至少对我的代码而言.所以我想编写一个单元测试来测试在我的一些代码运行之后是否可以对特定对象实例进行垃圾回收.
这有可能以可靠的方式进行吗?
编辑
我目前根据Paul Stovell的答案进行了以下测试,该答案成功:
[TestMethod]
public void ReleaseTest()
{
WindsorContainer container = new WindsorContainer();
container.Kernel.ReleasePolicy = new NoTrackingReleasePolicy();
container.AddComponentWithLifestyle<ReleaseTester>(LifestyleType.Transient);
Assert.AreEqual(0, ReleaseTester.refCount);
var weakRef = new WeakReference(container.Resolve<ReleaseTester>());
Assert.AreEqual(1, ReleaseTester.refCount);
GC.Collect();
GC.WaitForPendingFinalizers();
Assert.AreEqual(0, ReleaseTester.refCount, "Component not released");
}
private class ReleaseTester
{
public static int refCount = 0;
public ReleaseTester()
{
refCount++;
}
~ReleaseTester()
{
refCount--;
}
}
Run Code Online (Sandbox Code Playgroud)
我是否正确地假设,基于上述测试,我可以得出结论,使用NoTrackingReleasePolicy时Windsor不会泄漏内存?
我们编写了一个WCF服务供Java商店使用,他正在使用CXF生成适配器.我们不熟悉Java,但使用basicHttpBinding,SSL和基本身份验证公开了服务.集成测试表明.NET客户端可以正常使用该服务.但是,Java商店在使用该服务时遇到了麻烦.具体来说,它们得到以下JAXB错误:两个声明导致ObjectFactory类中的冲突.当CXF尝试创建适配器类时,如果2个操作具有相同的名称和命名空间,则通常会导致这种情况.
我们找不到任何应该导致任何类型冲突的类型或操作名称.我们已确保所有自定义类型都指定了命名空间,并且未在WSDL中的任何位置指定tempuri.org.Java商店怀疑错误是因为生成的WSDL包含<xsd:import元素.
所以,我的问题:
我正在尝试打包我的模块,但我似乎无法让它工作.
我的目录树类似于以下内容:
snappy/
__init__.py
main/
__init__.py
main.py
config.py
...
...
Run Code Online (Sandbox Code Playgroud)
我正在使用的代码是
from snappy.main.config import *
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ImportError: No module named snappy.main.config
Run Code Online (Sandbox Code Playgroud)
有什么想法会出错吗?这是在Ubuntu 8.10上使用Python 2.5.
在此先感谢您的帮助.
是否可以在matlab中打开Excel中的工作表并编辑公式?这个想法是通过创建第二张表来自动化不确定性分析,其中每个单元格中的不确定性来自前一个单元格的值.基本上,我想将单元格视为变量,并为每个单元格执行SQRT(SUM(Partials(xi)^ 2)).matlab应该没有问题,但它可以编辑表格中的公式吗?
目前的过程是从excel复制并粘贴到matlab.这是一个小函数,可以在matlab中对方程组进行不确定性:
function [f_u_total f_u] = uncertAnalysis(f, vars, vars_u)
f_u = [];
f_u_total = [];
for(i=1:length(f))
f(i)
item = uncertAnalysisi(f(i), vars, vars_u);
f_u = [f_u; item(1)];
f_u_total = [f_u_total; item(1)];
end
end
function [f_u_total f_u] = uncertAnalysisi(f, vars, vars_u)
f_u = [];
% take the partials and square them
for i=1:length(vars)
f_u = [f_u; vars(i) (diff(f, vars(i)).*vars_u(i)).^2];
end
% calculate the RSS
f_u_total = (sum(f_u(:,2))).^.5;
end
Run Code Online (Sandbox Code Playgroud)
顺便说一下,方程看起来像这样(为什么我不是手工做):
=(9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^4/C!Y3^6/(C!U3^C!Z3)^6*F3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*O3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*P3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^4*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*Q3^2+1/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*S3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*C!Z3^2/C!U3^2*U3^2+4*C!S3^2/C!V3^6*C!W3*(C!O
3-C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*V3^2+1/4*C!S3^2/C!V3^4/C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*W3^2+1/4*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3^3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*X3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^8/(C!U3^C!Z3)^6*Y3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3-
C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*LOG(C!U3)^2*Z3^2)^(1/2)
Run Code Online (Sandbox Code Playgroud) 在ASP.NET中,我通常在服务器端记录异常,在Windows窗体中,我可以在服务器端记录异常,也可以在客户端上写入日志文件.Silverlight似乎适合介于两者之间.
我想知道其他人正在做些什么来处理他们的Silverlight异常,我很好奇是否已经出现了任何最佳实践.
在Visual Studio中,有一种快速的方法可以知道项目中存在多少行代码?
我知道我可以使用以下语法使用jquery调用页面方法
$.ajax({
type: "POST",
url: "Default.aspx/GetDate",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
Run Code Online (Sandbox Code Playgroud)
这适用于aspx页面但是可以使用ascx页面吗?(网页控制)
我已经尝试了大约半个小时,因为我无法让它工作,我想知道它是否可能.
注意:为了清楚,当我尝试调用ascx页面时,我正在更新jquery中的url :)
.net ×2
c# ×2
asmx ×1
asp.net ×1
code-metrics ×1
cxf ×1
database ×1
delphi ×1
excel ×1
image ×1
java ×1
jquery ×1
matlab ×1
oracle ×1
package ×1
pagemethods ×1
python ×1
silverlight ×1
unit-testing ×1
wcf ×1
web-services ×1
winapi ×1
winforms ×1