相关疑难解决方法(0)

C#事件系统对于单线程程序是否具有确定性?

可能重复:
事件处理程序执行顺序

C#事件系统对于单线程程序是否具有确定性?这意味着,如果我按此顺序触发事件A,B和C,它们每次都会以相同的顺序处理吗?

我想编写一个严重依赖事件的游戏逻辑,并且事件的处理顺序与调用它们的顺序至关重要.那么我可以使用给定的事件系统,像Reactive Extensions这样的库是否满足这个要求,还是我必须实现自己的观察者系统?

c# events

7
推荐指数
1
解决办法
295
查看次数

确保C#中的多播委托执行列表顺序?

在做了一些阅读后,我理解处理程序调用顺序与订阅顺序相同但不保证.

所以我要说:

public event MYDEl ev;
Run Code Online (Sandbox Code Playgroud)

和订阅者:

ev+=GetPaper;
ev+=Print;
ev+=EjectPaper;
Run Code Online (Sandbox Code Playgroud)

保留+确保执行列表顺序的最佳实践机制是什么?

.net c# events invocation

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

Page.PreLoad 和 Page.Load 事件之间会发生什么?

问题很简单。

Page.PreLoad 的存在是否有技术原因,或者这只是方便您可以整齐地放置始终必须在 Load 代码之前执行的代码?

在 PreLoad 事件处理程序中添加代码与在 Load 事件处理程序顶部添加代码之间有区别吗?

使用 PreLoad 的典型场景是什么?

谢谢!

asp.net

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

事件优先级和流程订单

有没有办法指定处理已注册事件代表的顺序或优先级?例如,我有一个事件,我想在任何其他事件之前立即处理,但我希望允许其他对象注册该事件的监听器.如何实现这一目标?

让我们说proc1总是在proc 2之前运行.

class MessageProcessor
{
    private DataClient Client;
    public MessageProcesser(DataClient dc)
    {
         Client = dc;
         Client.MessageReceived += ProcessMessage;
    }

    void proc1(MessageEventArgs e)
    {
        // Process Message
    }

}

class DataClient
{
    public event MessageReceievedHandler MessageReceived;
}

void main()
{
    DataClient dc = new DataClient();
    MessageProcessor syncProcessor = new MessageProcessor(dc); // This one is high priority and needs to process all sync immediately when they arrive before any data messages
    MessageProcessor dataProcessor= new MessageProcessor(dc);  // This one can process the …
Run Code Online (Sandbox Code Playgroud)

.net c# events

4
推荐指数
2
解决办法
4685
查看次数

记录事件的调用顺序

调用特定事件的处理程序的顺序取决于该特定事件的实现。例如,使用多案例委托的默认后备存储,处理程序将按照它们注册的顺序被调用。但是类设计者/实现者可能使用addremove关键字来为事件访问器提供不同的后备存储,因此调用顺序也会不同。

.NET 框架基础库本身是否存在事件文档准确描述其调用顺序的情况?无论是否存在,依赖于此类记录的命令是否被认为是可接受的做法(例如,对于我自己实施和记录的事件)?为什么或者为什么不?

.net event-handling

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

如果我需要按特定顺序执行事件处理程序怎么办?

我有事件,例如:

public event EventHandler<NewReadyMessageEventArgs> NewReadyMessage
Run Code Online (Sandbox Code Playgroud)

问题是我需要为它添加两个处理程序,我需要先执行一个(因为最后一个依赖于第一个).即我需要一定的处理程序执行顺序.

我知道实际上处理程序将逐个执行,所以我只需要按正确的顺序附加它们,但这将是非常错误的设计.

我想创建单独的处理程序并附加它.在这个处理程序中,我只想按正确的顺序执行我的两个处理程序.你怎么想,你会建议什么?

c#

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

在C#中将两个方法组合在一起

我目前在C#中有两个不同的事件处理程序,它们执行两个不同的功能.虽然我如何将两种方法结合在一起,所以只有一个按钮可以同时执行这两种操作?(考虑到必须首先执行button1_Click事件.)

    private void button2_Click(object sender, EventArgs e)
    {
        var file = File.AppendText(@"c:\output2.txt");

        foreach (string tmpLine in File.ReadAllLines(@"c:\output.txt"))
        {
            if (File.Exists(tmpLine))
            {
                file.WriteLine(tmpLine);
            }
        }

        file.Close();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        using (StreamWriter sw = File.AppendText(@"c:\output.txt"))
        {
            StreamReader sr = new StreamReader(@"c:\filename.txt");

            string myString = "";
            while (!sr.EndOfStream)
            {

                myString = sr.ReadLine();
                int index = myString.LastIndexOf(":");
                if (index > 0)
                    myString = myString.Substring(0, index);

                sw.WriteLine(myString);
            }
            button2_Click(sender, e);

        }

    }
Run Code Online (Sandbox Code Playgroud)

.net c# windows

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

用户活动记录、遥测(以及全局异常处理程序中的变量)

背景:

我正在处理一个非常旧的应用程序,它很少并且非常间歇性地生成异常。

目前的做法:

通常我们程序员使用全局异常处理程序处理罕见的未知数,连接如下:

[STAThread]
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]
private static void Main()
{
    Application.ThreadException += new ThreadExceptionEventHandler(UIThreadException);
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
    AppDomain.CurrentDomain.UnhandledException +=
        new UnhandledExceptionEventHandler(UnhandledException);

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new OldAppWithLotsOfWierdExceptionsThatUsersAlwaysIgnore());
}

private static void UIThreadException(object sender, ThreadExceptionEventArgs t)
{
    //-------------------------------
    ReportToDevelopers("All the steps & variables you need to repro the problem are: " + 
    ShowMeStepsToReproduceAndDiagnoseProblem(t));
    //-------------------------------

    MessageToUser.Show("It’s not you, it’s us. This is our fault.\r\n Detailed information about this error has automatically been recorded and we have been notified.Yes, we do look at …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net debugging exception

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