标签: .net-2.0

事件订阅者是按订阅顺序调用的吗?

假设按订阅顺序调用事件订阅者是否安全?
例:

void One(object sender, EventArgs e) {}
void Two(object sender, EventArgs e) {}

event EventHandler foo;

foo += One;
foo += Two;
Run Code Online (Sandbox Code Playgroud)

当事件被触发时,One()总是在Two()之前调用吗?

编辑:
你应该不依赖它,我只是想.这个想法是,多播代表与COMMAND模式类似.所以我只是想知道.通常你会使用一个保存COMMAND命令的集合,这样你就可以做undo/redo/whatever.

.net c# events .net-2.0 c#-2.0

25
推荐指数
3
解决办法
9997
查看次数

Windows窗体中的加载与显示事件

希望我只是遗漏了一些明显的东西,但我试图了解Windows窗体中 Load和Shown事件之间的差异.

传统上,我只使用Load(或实际上是OnLoad,因为我认为覆盖一个方法比依靠设计者自己连接一个事件更干净),因为在所有版本的.NET中都可以使用它.使用.NET 2.0,引入了Shown事件.

现在,如果你在MSDN文档中查看这些描述("加载:第一次显示表单之前发生.","显示:每当表单首次显示时发生.")听起来像Load事件应该发生,然后表格应该可见,然后应该发生显示事件; 两者的结合使您可以在表格可见之前和之后执行某些任务.有道理,对吗?

但是,实验表明Shown事件总是发生 Load事件之前,每当我尝试它时(两者都发生在表单变得可见之前).然而,当我发现一个关于这些事件被触发的命令的页面时,我在谷歌周围时,他们总是列出首先被触发的Load事件.

我只是疯了,还是我错过了什么?(如果它们确实在大约同一时间发生,那么为什么首先添加了已显示的事件?)

(我目前在显示表单之前和之后做某事的解决方案是使用OnLoad进行"显示之前"的操作并为"显示后"的东西启动一个短时间的一次性计时器.哪个工作正常且可靠,但是它有点难看,我希望有一个更清洁的解决方案.但看起来显示的事件不是它.)

.net events .net-2.0 winforms

25
推荐指数
3
解决办法
3万
查看次数

从.NET 4.0应用程序链接.NET 2.0托管程序集时,使用哪个框架?

如果我需要从4.0 CLR应用程序链接到2.0 CLR程序集(纯托管代码,没有混合模式问题),2.0代码是否在2.0 CLR或4.0上运行.

基本上,是否存在影响2.0代码的4.0破坏性更改的风险?

clr .net-4.0 .net-2.0

24
推荐指数
2
解决办法
8829
查看次数

错误:必须在控制离开当前方法之前分配Out参数

在发回参数时收到此错误

错误:必须在控制离开当前方法之前分配Out参数

代码是

 public void GetPapers(string web, out int Id1, out int Id2)
    {
        SqlConnection conn = new SqlConnection(ConnectionString());
        conn.Open();
        SqlCommand cmd = new SqlCommand("GetPapers", conn);
        cmd.CommandType = CommandType.StoredProcedure;

        cmd.Parameters.Add(new SqlParameter("@URL", String(web)));

        SqlDataReader rdr = cmd.ExecuteReader();

        if (rdr.Read())
        {
            Id1 = (int)rdr["ID1"];
            Id2 = (int)rdr["ID2"];
        }

        rdr.Close();
    }
Run Code Online (Sandbox Code Playgroud)

称之为

GetPapers(web, out Id1, out Id2);
Run Code Online (Sandbox Code Playgroud)

与此问题相关

相关问题

c# compiler-errors .net-2.0

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

InvalidOperationException:无法为"Role"创建DbSet,因为此类型未包含在上下文的模型中

以下解决方案适用于.net核心1.1,但在从1.1升级到2.0后,我收到以下错误:

InvalidOperationException:无法为"Role"创建DbSet,因为此类型未包含在上下文的模型中.

当用户尝试登录并执行以下语句时:

var result = await _signInManager.PasswordSignInAsync(model.Email, 
                                model.Password, model.RememberMe, lockoutOnFailure: false);
Run Code Online (Sandbox Code Playgroud)

怎么了?


User.cs

public partial class User : IdentityUser<Guid>
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

IdentityEntities.cs

public partial class UserLogin : IdentityUserLogin<Guid>
{
}
public partial class UserRole : IdentityUserRole<Guid>
{
}
public partial class UserClaim : IdentityUserClaim<Guid>
{
}
public partial class Role : IdentityRole<Guid>
{
    public Role() : base()
    { 
    }

    public Role(string roleName)
    {
        Name = roleName;
    }
}
public partial class RoleClaim …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc .net-2.0 asp.net-identity

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

在没有Ajax的asp.net回发之后执行javascript函数

我希望在asp.net回发之后执行一个javascript函数,而不使用ajax.

我在偶数方法中尝试了以下方法但没有运气:

Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
Run Code Online (Sandbox Code Playgroud)

c# asp.net .net-2.0

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

在SqlParameter中使用DateTime存储过程,格式错误

我正在尝试从C#,.NET 2.0调用存储过程(在SQL 2005服务器上)DateTime作为a的值SqlParameter.存储过程中的SQL类型是"datetime".

从SQL Management Studio执行sproc工作正常.但是每当我从C#调用它时,我都会收到有关日期格式的错误.

当我运行SQL事件探查器来监视调用时,我会复制粘贴exec调用以查看正在发生的事情.这些是我对我尝试过的观察和注意事项:

1)如果我DateTime直接作为a DateTime或转换为传入SqlDateTime,则该字段由单引号的PAIR包围,例如

@Date_Of_Birth=N''1/8/2009 8:06:17 PM''
Run Code Online (Sandbox Code Playgroud)

2)如果我将DateTimein作为字符串传递,我只得到单引号

3)使用SqlDateTime.ToSqlString()不会产生UTC格式的日期时间字符串(即使转换为通用时间后)

4)使用DateTime.ToString()不会产生UTC格式的日期时间字符串.

5)手动设置DbTypeSqlParameterto DateTime不会改变上述观察结果.

那么,我的问题是,我是如何让C#通过正确格式化的时间SqlParameter?当然这是一个常见的用例,为什么这么难以开始工作?我似乎无法转换DateTime为SQL兼容的字符串(例如'2009-01-08T08:22:45')

编辑

RE:BFree,实际执行sproc的代码如下:

using (SqlCommand sprocCommand = new SqlCommand(sprocName))
{
    sprocCommand.Connection = transaction.Connection;
    sprocCommand.Transaction = transaction;
    sprocCommand.CommandType = System.Data.CommandType.StoredProcedure;
    sprocCommand.Parameters.AddRange(parameters.ToArray());
    sprocCommand.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

详细了解我的尝试:

parameters.Add(new SqlParameter("@Date_Of_Birth", DOB));

parameters.Add(new SqlParameter("@Date_Of_Birth", DOB.ToUniversalTime()));

parameters.Add(new SqlParameter("@Date_Of_Birth", 
    DOB.ToUniversalTime().ToString()));

SqlParameter param = new SqlParameter("@Date_Of_Birth", …
Run Code Online (Sandbox Code Playgroud)

c# sql-server datetime stored-procedures .net-2.0

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

从C#DataTable批量插入的最佳方法

我有一个DataTable我想要推送到DB.我希望能够说出来

myDataTable.update();
Run Code Online (Sandbox Code Playgroud)

但在阅读MSDN 文档后,显然这确实是逐行插入的.

应该注意的是,这些陈述不是作为批处理执行的; 每行都单独更新.

我有什么选择?

编辑:我正在使用SQL Server 2005

c# .net-2.0

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

在.NET中存储字符串对,制作对象或使用类的最佳方法是什么?

不知道我是否有"厚厚的一天" - 但我只是想知道这里最好的路线是什么.

语境:

我有一个字段列表,我想用它们存储别名(我使用的是.NET 2.0 BTW),例如

在此输入图像描述

所以它本质上是一对字符串:

参考,参考

社区,社区

邮编:POST_CODE

...而且我认为为这样的事情继续创建对象似乎太过分了,所以我应该创建一个StringDictionary并以这种方式存储值,即使我不使用StringDictionary类的任何功能我并不担心键值对关联等问题 - 我只是想保留一对字符串.

任何帮助/指针都会很棒.

c# string collections .net-2.0

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

如何使陷入无限循环的测试失败?

我有一些产生无限循环的代码.现在我需要编写一个在大约200ms后失败的测试.200ms将指示代码处于无限循环中.

例如:

public void CodeUnderTest()
{
   while(true)
   {

   }
} 
Run Code Online (Sandbox Code Playgroud)

.net c# unit-testing mstest .net-2.0

22
推荐指数
2
解决办法
2811
查看次数