小编YWE*_*YWE的帖子

可以指定使用delegate.BeginInvoke时AsyncCallback运行的线程吗?

根据我对.NET的理解,如果我使用BackgroundWorker并为RunWorkerCompleted提供事件处理程序,则事件处理程序将在调用RunWorkerAsync的同一线程上运行.相反,如果我在委托上使用BeginInvoke来异步运行一个方法,并将AsyncCallback参数传递给BeginInvoke,有没有什么方法可以指定回调在调用BeginInvoke的同一个线程上运行 - 或者对于任何任意线程?根据我的理解,回调运行在线程池的下一个可用线程上.这很好,但有没有办法在我想要的任何线程上运行AsyncCallback中的代码?我知道你可以在表单或控件上使用BeginInvoke,并在创建UI元素的线程上的回调运行中创建代码.但是,如果我想在没有表单或控件的非UI线程上运行代码呢?

.net c# multithreading

8
推荐指数
2
解决办法
4285
查看次数

如何防止Windows窗体设计器为属性生成默认值分配?

我有一个用户控件,其属性是引用类型.Windows窗体设计器不断生成将属性的初始值赋给null的代码.我怎么能阻止这个?

我尝试添加Reset和ShouldSerialize方法 - 重置有一个空体,而ShouldSerialize总是返回false - 但这不起作用.我还应用了BrowsableAttribute并将其设置为false.

编辑:

属性的类型是同一项目中的一个类.它不是一个组件或控件,只是一个继承自Object的普通类.此外,属性的setter使用属性的值作为参数调用方法,并且该方法不接受null作为有效参数.

例:

public MyClass Property1 
{
   get { return _property1; }
   set
   {
        _property1 = value;
        SomeMethod(value); // This method throws ArgumentNullException;
   }
}
Run Code Online (Sandbox Code Playgroud)

注意:我确实认识到get和set方法可能更合适.

.net c# winforms

8
推荐指数
1
解决办法
2498
查看次数

如何使用SMO与SQL Server删除并重新创建主键索引?

我正在使用SQL Server 2005 Express.我想使用SMO循环遍历数据库中的每个表,并将每个Char列更改为Varchar列.如果列是主键的成员,我需要先删除主键,然后再更改列的数据类型.然后我需要重新创建索引.这是我尝试使用的代码:

foreach (Table table in database.Tables)
{
    Index pk = table.Indexes.Cast<Index>().SingleOrDefault(index => index.IndexKeyType == IndexKeyType.DriPrimaryKey);
    if (pk != null)
    {
        pk.Drop();
        table.Alter();
    }
    foreach (Column column in table.Columns.Cast<Column>().Where(column => column.DataType.SqlDataType == SqlDataType.Char))
    {
        column.DataType = new DataType(SqlDataType.VarChar, column.DataType.MaximumLength);
    }
    table.Alter();
    if (pk != null)
    {
        pk.Create();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试创建索引时,我得到一个异常,消息"无法访问Microsoft.SqlServer.Management.Smo.Index'[PK_table1]'的属性或方法,因为它已被删除." 那么有没有一种方法可以完成我想用SMO做的事情?

我在使用Index的Script方法删除索引之前尝试编写索引脚本,但它抛出了一个异常,消息"索引'PK_table1'引用了不存在的列'[table1].[owner]'." 所有者专栏明确存在.

.net c# smo sql-server-2005

7
推荐指数
2
解决办法
8320
查看次数

C#公共类别别名?

我想要做的是在一个新的命名空间中用C#编写一些类,它们充当另一个命名空间中的类的包装类.有时候不需要包装类,但我仍然想在新的命名空间中使用相应的类.我想要一个完整的课程副本.有没有办法通过引用另一个类的定义在新命名空间中定义类?换句话说,我想要一个别名.

为了阐明我的意思,如果现有的命名空间名为"Namespace1",而新的命名空间命名为"Namespace2",则在Namespace2中使用如下代码:

using Class1 = Namespace1.Class1;
Run Code Online (Sandbox Code Playgroud)

不会起作用,因为Namespace2.Class1不存在.Class1只对Namespace2设置为"private",而对Namespace2设置为"public".如果我可以Namepsace2.Class1从命名空间外部使用,如果仍然可以参考Namespace1.Class1,那么这就是我想要的.

我想可能有一种方法可以通过属性或反射实现这一点.如果有一些预处理器指令或宏可以复制代码也可以工作,但显然C#没有这样的东西.

.net c#

6
推荐指数
2
解决办法
3279
查看次数

Powerbuilder语言文档

我在哪里可以找到实际PowerBuilder语言的文档.我指的是当您从库画家的右键菜单中选择"编辑源"时获得的代码类型.不是你通常写的那种代码.

powerbuilder

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

PowerBuilder有免费的差异工具吗?

我知道一些共享软件的PowerBuilder diff工具.但有没有免费软件或开源?

powerbuilder

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

Adaptive Server Anywhere不支持FROM子句中的子查询吗?

我试图在Adaptive Server Anywhere数据库上执行SQL查询.这里是:

SELECT count(*) AS s
FROM (
    SELECT column1, count(*) AS n
    FROM table1
    GROUP BY column1
    HAVING n > 1
)
Run Code Online (Sandbox Code Playgroud)

在子查询中,我希望得到所有重复的行,而在外部查询中,我想要重复的行数.

但是数据库说我每次在FROM子句中使用子查询时都会出现语法错误.这不受支持吗?

我正在Powerbuilder中的交互式SQL中执行查询.我使用ODBC连接到我的数据库.

sql powerbuilder odbc sybase-asa

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

如何确保Windows窗体"完全"关闭?

我在Windows窗体应用程序中有一个表单,我想在主窗体上显示,关闭它,然后立即显示一个对话框使用MessageBox.Show().但是当显示消息框时,第一个表单仍然显示,并且在我单击消息框上的"确定"之前它不会消失.我试着在表单VisibleChanged事件的事件处理程序中显示消息框,甚至同时调用Refresh()表单和主表单.有没有办法在显示消息框之前确定第一个表单何时完全消失?

编辑:

下面是一些代码,演示了如何显示表单.

static class Program
{
    // The main form is shown like this:
    static void Main()
    {
        Application.Run(new MainForm());
    }
}

public class Class1 
{
    // _modalForm is the first form that is displayed that won't fully go away 
    // when it is closed.
    ModalForm _modalForm;
    BackgroundWorker _worker;

    public Class1()
    {
        _modalForm = new ModalForm();
        _worker = new BackGroundWorker();
        _worker.RunWorkerCompleted += backgroundWorker_RunWorkerCompleted
    }

    public void Method1()
    {
        _worker.RunWorkerAsync();

        // The first form …
Run Code Online (Sandbox Code Playgroud)

c# vb.net winforms

0
推荐指数
1
解决办法
1136
查看次数