Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在运行函数之前估计执行时间_C#_Cpu Usage_Execution Time - Fatal编程技术网

C# 在运行函数之前估计执行时间

C# 在运行函数之前估计执行时间,c#,cpu-usage,execution-time,C#,Cpu Usage,Execution Time,我有一个函数,在我不太新的开发机器上运行大约0.7秒。(它在我测试的另一台机器上运行约3秒) 我想在上述功能完成前半秒向用户显示一些预先消息 我不想在功能完成之前太长时间显示消息,因为只看消息然后等待会很烦人。另一方面,我宁愿不要等到函数完成,因为整个过程都是从一个用户操作开始的,我不想浪费时间——如果我能在另一个函数完成它的工作时显示该消息,那就更好了 我已经添加了一个带有短线程的循环。sleep(),以便在函数“太快”时挂起前置消息,但我恐怕通常不会这样。。。因此,我想看看是否可以根据当前的

我有一个函数,在我不太新的开发机器上运行大约0.7秒。(它在我测试的另一台机器上运行约3秒)

我想在上述功能完成前半秒向用户显示一些预先消息

我不想在功能完成之前太长时间显示消息,因为只看消息然后等待会很烦人。另一方面,我宁愿不要等到函数完成,因为整个过程都是从一个用户操作开始的,我不想浪费时间——如果我能在另一个函数完成它的工作时显示该消息,那就更好了

我已经添加了一个带有短
线程的循环。sleep()
,以便在函数“太快”时挂起前置消息,但我恐怕通常不会这样。。。因此,我想看看是否可以根据当前的机器规格,甚至根据当前的CPU使用情况,粗略估计执行时间,并在运行函数之前这样做。另外,因为我们谈论的是秒和毫秒,如果获取这些信息需要几毫秒以上的时间,那么就不值得了。在这种情况下,我可能只在加载应用程序时计算一次


有人知道怎么做吗?

估计时间是毫无意义的,而且很可能是不可能准确的。(尽管在某些情况下可以这样做)

看看Windows文件复制在过去的“还剩10秒…还剩2分钟…还剩5秒”中,它一直在根据所使用的任何指标更改其估计值。最好只显示一个监视图像或消息,让用户知道正在发生什么

如果您正在处理一个项目列表,那么对您来说会容易得多,因为消息可能是:

处理100项中的第4项


至少用户可以大致知道代码在做什么。如果您没有类似的信息来通知用户,那么我将减少您的损失,并显示一条简单的“处理…”消息,或一些图标,无论您对解决方案有何想法。

在后台线程上运行函数,在UI线程上显示消息,并在后台线程完成任务后删除消息。你不需要估计任何东西,你仍然可以保持用户界面的自由。假设时间总是一个坏主意。你怎么知道你的功能在任何机器上都能运行超过.5秒?假设时间是不可能的:如果在过去的10秒内,用户开始了一项具有更高优先级的繁重任务,而你的任务却被饿死了呢?是否有一些可行的方法来确定还有多少工作要做?在我的例子中,我无法显示“处理…”消息。我只想在流程完成之前弹出一条消息(一幅图像)。当然,我使用单独的线程来运行“heavy”函数和显示pop消息