小编vir*_*a24的帖子

如何知道事件的参数类型

我有一个事件,我将我的处理程序与它关联起来.当我编写处理程序方法时,如何知道函数采用哪些参数?

例:

    // Add an event handler to be called whenever there is new color frame data
            this.sensor.ColorFrameReady += this.SensorColorFrameReady;
            this.sensor.AllFramesReady += this.AllFramesReady;

    //handler
     private void AllFramesReady(object sender, AllFramesReadyEventArgs allFramesReadyEventArgs)
    {


        throw new NotImplementedException();
    }
Run Code Online (Sandbox Code Playgroud)

我怎么知道我的函数的参数是object sender和所有帧准备args?

c# events

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

秒表c#在不同的线程中表现不同?

我目前正在使用秒表作为全球计时器.我有主线程运行,另一个线程和事件方法.主线程启动另一个线程,事件方法由事件触发.两种方法都会调用秒表并获得时间.问题是,时间不一致:从主线程:START REC AT 9282 STOp REC AT 19290

来自另一个线程:音频1音频304音频354音频404音频444音频494音频544音频594

来自事件方法:视频4视频5视频29视频61视频97视频129视频161

我不明白为什么如果我在9282开始我的rec,另外两个调用秒表的函数会有从零开始的计时器?这是线程相关的问题吗?我怎样才能解决这个问题?谢谢

更新:*********

当我保存我的帧我改为:long a = relogio.EllapseMilliseconds我打印出这个值,它正常,如预期的那样.但是当我打印存储在列表中的值时,它们从开始时开始.奇怪吧?对于所有的麻烦感到厌烦,我在没有开始的时候打印它,为什么他们都试图从零开始!很多感谢和抱歉!

主线程

   private void Start_Recording_Click(object sender, RoutedEventArgs e)
    {

        rec_starting_time = relogio.ElapsedMilliseconds;
        Console.WriteLine("START REC AT " + rec_starting_time);
        write_stream.enableRecording();

        Thread a = new Thread(scheduleAudioVideoFramePicks);
        a.Start();
Run Code Online (Sandbox Code Playgroud)

scheduleAudioVideoFramePicks - 这个线程只计算时间,所以我知道什么时候停止

       //while....
      if (rec_starting_time + time_Actual > rec_starting_time+recording_time * 1000)//1000 - 1s = 1000ms
            {
                totalRecordingTimeElapsed = true;
                write_stream.disableRecording();
                Console.WriteLine("STOp REC AT " + relogio.ElapsedMilliseconds);
            }
     //end while
    lock (list_audio)
        {
        int …
Run Code Online (Sandbox Code Playgroud)

c# multithreading stopwatch

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

标签 统计

c# ×2

events ×1

multithreading ×1

stopwatch ×1