Tag: 秒表

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

我目前正在使用秒表作为全球计时器。 我有主线程运行,另一个线程和事件方法。 主线程启动另一个线程,事件方法由事件触发。 两种方法都会调用秒表并获得时间。 事情是,时间不一致:从主线程:START REC AT 9282 STOp REC AT 19290 来自另一个线程:音频1音频304音频354音频404音频444音频494音频544音频594 来自事件方法:video4video5video29video61video97video129video161 我不明白为什么如果我在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 […]

C#秒表即时更新

(我的第一个问题在这里!)嗨,我是c#的初学者。 我试图构建一个简单的计时器(在Windows.Forms中)。 我做了一个标签来指示时间,并使用了StopWatch类(来自system.diagnostics)。 启动/停止秒表的触发事件是空格键KeyDown事件。 第二次点击后,秒表停止,Label.text被分配给Stopwatch.Elapsed值。 我想不断更新标签,但我不知道如何。 如果我在事件本身中使用while(StopWatchName.IsRunning) ,则事件将无限期地继续,并且不会响应第二次点击。 提前感谢任何想法!

我可以使用计时器每隔x毫秒更新一次标签

这是我的代码: Stopwatch timer = new Stopwatch(); timer.Start(); while (timer.ElapsedMilliseconds < 3000) { label1.Text = Convert.ToString( timer.ElapsedMilliseconds ); } timer.Stop(); 我的意思是实时更新标签的文本,所以如果timer.ElapsedMilliseconds == 1350 ,那么label1.Text = 1350 。 我怎样才能做到这一点? 提前致谢!

在C#中设置秒表程序的开始时间

我想写一个简单的秒表程序,我可以使用以下代码 public Form1() { InitializeComponent(); } System.Diagnostics.Stopwatch ss = new System.Diagnostics.Stopwatch { }; private void button1_Click(object sender, EventArgs e) { if (button1.Text == “Start”) { button1.Text = “Stop”; ss.Start(); timer1.Enabled = true; } else { button1.Text = “Start”; ss.Stop(); timer1.Enabled = false; } } private void timer1_Tick(object sender, EventArgs e) { int hrs = ss.Elapsed.Hours, […]

C#秒表显示错误的时间

我看过其他用户post显示秒表测量在“Thread.Sleep(5000)”中花费的时间约为5000毫秒。 但是我的程序会产生以下结果 for (int i = 0; i < 20; ++i) { Stopwatch sw = Stopwatch.StartNew(); DateTime start = DateTime.Now; Thread.Sleep(5000); sw.Stop(); Console.Out.WriteLine( "StopWatch Diff:" + sw.ElapsedMilliseconds.ToString()); Console.Out.WriteLine( "DateTime Diff:" + DateTime.Now.Subtract(start).TotalMilliseconds.ToString()); } 秒表差异:1684 DateTime Diff:5262.592 秒表差异:1625 DateTime Diff:4997.12 秒表差异:1604 DateTime Diff:4997.12 秒表差异:1601 DateTime Diff:4997.12 秒表差异:1690 DateTime Diff:4997.12 秒表差异:1603 只是我在观察这种行为吗? 为什么秒表在实际经过5秒后测量为1.6秒。 这是线程实际运行的时间?

.Net函数调用的性能(C#F#)VS C ++

由于F#2.0已成为VS2010的一部分,我对F#感兴趣。 我想知道使用它有什么意义。 我读了一下,我做了一个测量函数调用的基准。 我用过Ackermann的函数:) C# sealed class Program { public static int ackermann(int m, int n) { if (m == 0) return n + 1; if (m > 0 && n == 0) { return ackermann(m – 1, 1); } if (m > 0 && n > 0) { return ackermann(m – 1, ackermann(m, n […]

任务中的秒表似乎是所有任务的附加,想要测量任务间隔

我正在循环运行并以下列方式启动任务: var iResult = new List(); foreach(var i in myCollection) { var task = Task.Factory.StartNew(() => DoSomething(), TaskCreationOptions.LongRunning); task.ContinueWith(m => myResponseHandler(m.Result)); iResult.Add(task); } 在我的DoSomething()方法中,我有一个计时器: public static myMsg DoSomething() { var timer = System.Diagnostics.Stopwatch.StartNew(); DoLongRunningTask(); //If it matters this hits a REST endpoint (https) timer.Stop(); return new myMsg(timer.ElaspedMilliseconds); } 当我遍历myMsg的列表时, myMsg似乎完全是加法的 – 第一个上的ElaspedMilliseconds可能是300,但最后一个可能是50000(50秒) – 这实际上是整个事情需要的大致时间运行(由另一个计时器测量)。

如果有的话,使用System.Diagnostics.Stopwatch的资源惩罚是什么?

例如 foo() //Some operation bound by an external resource. db,I/O, whatever. 与 var watch = new Stopwatch(); watch.Start(); foo() var time = watch.ElapsedMilliseconds watch.Stop();

System.Diagnostics.Stopwatch在Elapsed …属性中返回负数

秒表可以返回负值是否正常? 下面的代码示例可用于重现它。 while (true) { Stopwatch sw = new Stopwatch(); sw.Start(); sw.Stop(); if (sw.ElapsedMilliseconds < 0) Debugger.Break(); } 我可以重现负数的唯一地方是我的虚拟机(由8核机器上的Hyper-V托管)

以高分辨率间隔/计时器提升事件

我想使用c#使用最高分辨率计时器。 例如,我想每11个时钟提出一个事件(我听说嘀嗒是pc中最高的计数器)。 我试过计时器,发现最小经过时间以毫秒为单位。 我看了秒表,但秒表不会引发事件。 谢谢。