在我的Windows窗体应用程序客户端有时报告一个奇怪的异常
System.InvalidOperationException: Value Dispose() cannot be called while doing CreateHandle()
at System.Windows.Forms.Control.Dispose(Boolean disposing)
at System.Windows.Forms.ContainerControl.Dispose(Boolean disposing)
at System.ComponentModel.Component.Dispose()
at MyCompany.SomeApp.DialogBox.Show(string caption, string message)
at MyCompany.SomeApp.MainForm.Button1_Click(Object sender, MouseEventArgs e)
Run Code Online (Sandbox Code Playgroud)
导致此错误的代码如下所示:
namespace MyCompany.SomeApp
{
public class DialogBox : CustomForm
{
public static DialogResult Show(string caption, string message)
{
using (DialogBox dialog = new DialogBox())
{
dialog.Text = caption;
dialog.lblMessage.Text = message;
return dialog.ShowDialog();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
DialogBox基本上是一个继承自Windows.Forms.Form的类,并做了一些设计更改,没什么特别的.例外情况发生在
return dialog.ShowDialog();
Run Code Online (Sandbox Code Playgroud)
而不是using
像我期望的那样在街区尽头.看起来在某种程度上,在ShowDialog()
方法中,在创建表单句柄之前,调用Dispose()方法.但我的DialogBox既没有调用Dispose()本身也没有吞下其他异常,它只在OnPaint()事件中做了一些绘画.
有没有人有一些线索如何摆脱这个例外?
更新:
这是我的CustomForm类中唯一的代码(除了Windows窗体设计器中的更改模式(添加了2个标签,一个按钮并更改了一些颜色)
Public Class CustomForm
Inherits …
Run Code Online (Sandbox Code Playgroud) 我正在寻找关于如何管理.NET程序集的三个不同程序集版本号的指针,建议甚至口述.产品版本是最简单的,因为这似乎通常由业务决定.然后,文件版本似乎用于部署之间的版本控制,其中实际的程序集版本仅在发货时使用.
现在我只是想找一个简单的方法来标记组件的测试和维护版本,而这些版本都没有依赖,因此我正在考虑在文件版本上自动递增构建和修订版本号,并且为了最终版本,复制当前版本文件版本到程序集版本.该产品正在生产中使用,但仍在开发中 - 您知道 - 其中一家小公司,没有变更控制基础设施的情况.
.net versioning version-control assemblyversions .net-assembly
我正在使用GWT与Hibernate,c3p0和MySQL来制作一个受众有限的网络应用程序(每天最多50个用户).在测试期间,我发现Hibernate正在打开与每个会话的连接但不关闭它,无论使用何种close()
方法.
我目前的配置如下:
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.url=
hibernate.connection.username=
hibernate.connection.password=
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.current_session_context_class=thread
hibernate.c3p0.min_size=1
hibernate.c3p0.max_size=1
hibernate.c3p0.timeout=10
hibernate.c3p0.max_statements=50
hibernate.c3p0.idle_test_period=10
hibernate.c3p0.unreturned_connection_timeout=1
hibernate.connection.provider_class=org.hibernate.connection.C3P0ConnectionProvider
Run Code Online (Sandbox Code Playgroud)
每次与应用程序的新连接都会创建一个新池.例如,如果我将池大小设置为3,则应用程序的2个连接将导致6个连接,直到应用程序关闭.
预期的行为是在每次事务之后简单地关闭或重用连接.我怎样才能做到这一点?
我有一个带参数的名为insert2Newsletter的存储过程
(@sex nvarchar(10),
@f_name nvarchar(50),
@l_name nvarchar(70),
@email nvarchar(75),
@ip_address nvarchar(50),
@hotelID int,
@maArt nchar(2))
Run Code Online (Sandbox Code Playgroud)
我想在插入触发器中调用此存储过程.如何从插入中检索相应的字段以及如何在触发器中调用insert2Newsletter?
我尝试没有成功:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER RA2Newsletter
ON [dbo].[Reiseagent]
AFTER INSERT
AS
DECLARE @rAgent_Name nvarchar(50),
DECLARE @rAgent_Email nvarchar(50),
DECLARE @rAgent_IP nvarchar(50),
DECLARE @hotelID int
BEGIN
SET NOCOUNT ON;
-- Insert statements for trigger here
Select @rAgent_Name=rAgent_Name, @rAgent_Email=rAgent_Email, @rAgent_IP=rAgent_IP, @hotelID=hotelID From Inserted
EXEC insert2Newsletter '','',@rAgent_Name,@rAgent_Email,rAgent_IP,@hotelID,'RA'
END
GO
Run Code Online (Sandbox Code Playgroud)
很多你的反馈...问候......
是否有可能对脚本说不是在绝对位置搜索解释器,而是在他的路径中?
例如,#!/usr/bin/php
如果用户在其他地方安装了php ,则写入将失败.
#!php
当然,写作并不会自动起作用,而且我找不到任何关于它的信息,他们只是将这种方法视为"方式"来做到这一点.
那么,是否有标准的简单语法来说"在路径中的任何地方搜索它"?
我正在使用Inno Setup,它有两个组件:一个用于32位机器,另一个用于64位.这些将在XP/Vista/Win7上运行.
[Components]
Name: Bin/32; Description: 32-bit; Types: full; Flags: dontinheritcheck
Name: Bin/64; Description: 64-bit; Types: full; Flags: dontinheritcheck
Run Code Online (Sandbox Code Playgroud)
目前:
我想要的是:
到目前为止我发现的是:
PS不幸的是我无法为每个架构安装单独的安装程序.
在我的WPF UI中,我通过以下代码使用我在xaml中引用的RoutedCommands:
Command="viewModel:MessageListViewModel.DeleteMessagesCommand"
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个到我的ViewModel类的静态链接,我认为这不如创建自定义ICommand实现那样好,并使用如下语法
Command="{Binding DeleteMessagesCommand}"
Run Code Online (Sandbox Code Playgroud)
创建一个后,我注意到我所做的一个主要缺点:RoutedCommands使用CommandManager并且(以某种方式对我来说完全不透明)触发CommandManager.RequerySuggested事件,以便自动重新获取它们的CanExecute方法.至于我的自定义实现,CanExecute只在启动时触发一次,之后再也不会再触发.
有没有人有这个优雅的解决方案?
快速问题,是否可以将组合框绑定到对象列表,但是将selectedvalue属性指向对象,而不是对象的属性.
我只是问,因为我们有一些Business Objects引用了其他对象 - 比如'Year'对象.那年的对象可能需要换掉另一年的对象.
我能想到的唯一解决方案是让另一个类具有单个属性,在这种情况下指向年份对象.然后将组合框绑定到这些的列表,并将显示和值成员设置为单个属性.
但是,对于任何"查找",我们这样做似乎有点痛苦?
马龙
必须从网络存储访问某些媒体文件才能通过SMB和通用Internet文件系统访问.PHP网站需要在远程存储块上执行文件操作操作.您可以建议一些替代方法,或者如果您有任何想法或可能有所帮助:
.net ×2
c# ×2
java ×2
winforms ×2
bash ×1
binding ×1
c3p0 ×1
combobox ×1
data-binding ×1
dispose ×1
gwt ×1
hibernate ×1
icommand ×1
inno-setup ×1
interpreter ×1
mysql ×1
php ×1
samba ×1
smb ×1
sql-server ×1
triggers ×1
versioning ×1
wpf ×1