问题列表 - 第35384页

System.InvalidOperationException:执行CreateHandle()时无法调用值Dispose()

在我的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 c# dispose winforms

5
推荐指数
1
解决办法
1万
查看次数

运行循环5分钟

我有一个要求在5分钟内运行一个while循环.我找了计时器api,但我找不到这样做.任何人都可以为此提供代码snipet.
谢谢

java

1
推荐指数
2
解决办法
1万
查看次数

维护程序集版本号的最佳实践/指导

我正在寻找关于如何管理.NET程序集的三个不同程序集版本号的指针,建议甚至口述.产品版本是最简单的,因为这似乎通常由业务决定.然后,文件版本似乎用于部署之间的版本控制,其中实际的程序集版本仅在发货时使用.

现在我只是想找一个简单的方法来标记组件的测试和维护版本,而这些版本都没有依赖,因此我正在考虑在文件版本上自动递增构建和修订版本号,并且为了最终版本,复制当前版本文件版本到程序集版本.该产品正在生产中使用,但仍在开发中 - 您知道 - 其中一家小公司,没有变更控制基础设施的情况.

.net versioning version-control assemblyversions .net-assembly

151
推荐指数
4
解决办法
5万
查看次数

如何防止Hibernate + c3p0 + MySql创建大量睡眠连接?

我正在使用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个连接,直到应用程序关闭.

预期的行为是在每次事务之后简单地关闭或重用连接.我怎样才能做到这一点?

java mysql gwt hibernate c3p0

4
推荐指数
1
解决办法
6223
查看次数

在SQL Server中的"创建触发器"中调用存储过程

我有一个带参数的名为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)

很多你的反馈...问候......

sql-server triggers

18
推荐指数
2
解决办法
10万
查看次数

Bash:不是绝对的脚本#!翻译吗?

是否有可能对脚本说不是在绝对位置搜索解释器,而是在他的路径中?

例如,#!/usr/bin/php如果用户在其他地方安装了php ,则写入将失败.

#!php当然,写作并不会自动起作用,而且我找不到任何关于它的信息,他们只是将这种方法视为"方式"来做到这一点.

那么,是否有标准的简单语法来说"在路径中的任何地方搜索它"?

bash interpreter

5
推荐指数
1
解决办法
562
查看次数

Inno Setup:基于PC架构禁用组件

我正在使用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)

目前:

  • 运行安装程序时,默认情况下会勾选两个组件.

我想要的是:

  • 一个适当的默认值(即32位或64位勾选),具体取决于用户的机器.
  • 弄清楚不合适的组件也是一个奖励.

到目前为止我发现的是:

  • 我可能想在[Code]部分使用Pascal.
  • IsWin64功能
  • 我可能想要使用一个事件,但我找不到任何与我的需求有关的事情.

PS不幸的是我无法为每个架构安装单独的安装程序.

inno-setup

2
推荐指数
1
解决办法
3275
查看次数

WPF自定义ICommand实现和CanExecuteChanged事件

在我的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只在启动时触发一次,之后再也不会再触发.

有没有人有这个优雅的解决方案?

wpf binding icommand

5
推荐指数
1
解决办法
5711
查看次数

c#combobox绑定到对象列表

快速问题,是否可以将组合框绑定到对象列表,但是将selectedvalue属性指向对象,而不是对象的属性.

我只是问,因为我们有一些Business Objects引用了其他对象 - 比如'Year'对象.那年的对象可能需要换掉另一年的对象.

我能想到的唯一解决方案是让另一个类具有单个属性,在这种情况下指向年份对象.然后将组合框绑定到这些的列表,并将显示和值成员设置为单个属性.

但是,对于任何"查找",我们这样做似乎有点痛苦?

马龙

c# data-binding combobox business-objects winforms

13
推荐指数
2
解决办法
5万
查看次数

PHP SAMBA/SMB/CIFS和smb4php类

必须从网络存储访问某些媒体文件才能通过SMB和通用Internet文件系统访问.PHP网站需要在远程存储块上执行文件操作操作.您可以建议一些替代方法,或者如果您有任何想法或可能有所帮助:

  1. 配置SAMBA/SMB/CIFS
  2. SMB/SAMBA/CIFS客户端配置
  3. 通过PHP访问文件系统 - 研究表明,PHP在这方面提供了smb4php类,但不支持如何在完整的设置中使用.

php smb samba

5
推荐指数
1
解决办法
5098
查看次数