C# 在方法处理C时显示计时器#
我想显示方法处理并返回其响应时经过的时间(以秒为单位)。也许它将与任务或线程一起完成,但我并不是真的能够实现它。 任何帮助都将不胜感激 谢谢C# 在方法处理C时显示计时器#,c#,C#,我想显示方法处理并返回其响应时经过的时间(以秒为单位)。也许它将与任务或线程一起完成,但我并不是真的能够实现它。 任何帮助都将不胜感激 谢谢 public function() { while(wait for getAllInformation() function is processing) { Console.Write("Elapsed time... "+ some timer which shows time in seconds); } }
public function()
{
while(wait for getAllInformation() function is processing)
{
Console.Write("Elapsed time... "+ some timer which shows time in seconds);
}
}
诸如此类:
public async Task MyMehod()
{
Task<IEnumerable<int>> infoGetTask = GetAllInformation();
Stopwatch stopwatch = Stopwatch.StartNew();
while (!infoGetTask.IsCompleted)
{
Console.Write($"Elapsed time... {Math.Round(stopwatch.Elapsed.TotalSeconds, 0)}");
await Task.Delay(1000);
}
foreach (int e in infoGetTask.Result)
{
Console.WriteLine(e);
}
}
public async Task<IEnumerable<int>> GetAllInformation()
{
await Task.Delay(3000);
return new int[3] { 1, 2, 3 };
}
public异步任务MyMehod()
{
任务infoGetTask=GetAllInformation();
秒表秒表=Stopwatch.StartNew();
而(!infoGetTask.IsCompleted)
{
Write($“运行时间…{Math.Round(stopwatch.appeased.TotalSeconds,0)}”);
等待任务。延迟(1000);
}
foreach(infoGetTask.Result中的int e)
{
控制台写入线(e);
}
}
公共异步任务GetAllInformation()
{
等待任务。延迟(3000);
返回新的int[3]{1,2,3};
}
请注意,为了简单起见,我只检查IsCompleted,但还有两个可能的标志可以/应该检查。类似的内容:
public async Task MyMehod()
{
Task<IEnumerable<int>> infoGetTask = GetAllInformation();
Stopwatch stopwatch = Stopwatch.StartNew();
while (!infoGetTask.IsCompleted)
{
Console.Write($"Elapsed time... {Math.Round(stopwatch.Elapsed.TotalSeconds, 0)}");
await Task.Delay(1000);
}
foreach (int e in infoGetTask.Result)
{
Console.WriteLine(e);
}
}
public async Task<IEnumerable<int>> GetAllInformation()
{
await Task.Delay(3000);
return new int[3] { 1, 2, 3 };
}
public异步任务MyMehod()
{
任务infoGetTask=GetAllInformation();
秒表秒表=Stopwatch.StartNew();
而(!infoGetTask.IsCompleted)
{
Write($“运行时间…{Math.Round(stopwatch.appeased.TotalSeconds,0)}”);
等待任务。延迟(1000);
}
foreach(infoGetTask.Result中的int e)
{
控制台写入线(e);
}
}
公共异步任务GetAllInformation()
{
等待任务。延迟(3000);
返回新的int[3]{1,2,3};
}
请注意,为了简单起见,我只检查IsCompleted,但还有两个可能的标志可以/应该检查。您应该使用Microsoft的反应式框架来检查。然后您可以简单地执行以下操作:
public int GetAllInformationWithTimer()
{
using (Observable.Interval(TimeSpan.FromSeconds(1.0))
.Subscribe(x =>
Console.WriteLine("Elapsed Time: {0} seconds", x + 1)))
{
return GetAllInformation();
}
}
只需获取“System.Reactive”即可获得所需的库。为此,您应该使用Microsoft的Reactive框架。然后您可以简单地执行以下操作:
public int GetAllInformationWithTimer()
{
using (Observable.Interval(TimeSpan.FromSeconds(1.0))
.Subscribe(x =>
Console.WriteLine("Elapsed Time: {0} seconds", x + 1)))
{
return GetAllInformation();
}
}
只需获取“System.Reactive”即可获得所需的库。您应该在单独的任务中进行计时。与功能完全分离。部分代码显示和更新时间不应与
功能混用。它们是完全不同的东西。在启动函数之前,您启动计时器,在函数完成后,您应该停止计时器。您应该在单独的任务中进行计时。与功能完全分离。部分代码显示和更新时间不应与功能混用。它们是完全不同的东西。在启动函数之前,您启动计时器,在函数完成后,您应该停止计时器。虽然下面的解决方案有效,但也将对此进行探讨。非常感谢。@user3728843-反应式框架非常强大。我几乎可以用它来完成任务和事件所能做的任何事情,而且它可以做的更多。非常感谢。@user3728843-反应式框架非常强大。我几乎可以将它用于任务和事件所能做的任何事情,而且它能做的更多。@user3728843我很高兴它能帮助您!如果您能将我的答案标记为接受或投票,我将不胜感激(:@user3728843我很高兴它对您有所帮助!如果您能将我的答案标记为接受或投票,我将不胜感激(: