Я хочу создать приложение ASP.NET WinForms, которое отслеживает время выполнения задачи. Мне нужно написать форму, чтобы я мог добавить задачу в базу данных, открыть ее на новой вкладке и уметь запускать, приостанавливать и останавливать задачу. Когда я закончу, мне нужно рассчитать время, затраченное на выполнение задачи. Я хотел бы посмотреть, как работает секундомер на странице, показывая часы: min: sec обновляется каждую секунду через AJAX. Я уже смотрел в Интернете на TimeSpan, DateTime, StopWatch и т. Д., И я не могу найти ничего, что сработает для меня. Я начал с простой формы с кнопками запуска и остановки. Событие _click для кнопки запуска назначает мою переменную DateTime «startTime = DateTime.Now», а событие _click для кнопки остановки назначает мою переменную DateTime «endTime = DateTime.Now». Затем я использую TimeSpan «Истек» для вычисления TimeSpan 'elapsed = (endTime - startTime). Когда я обновляю метку, чтобы показать прошедшее время, я ожидаю, что пройду только секунды, но я получу всю строку DateTime. Ниже мой код:Time Elapsed/StopWatch
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
namespace CS_StopWatch
{
public partial class Default : System.Web.UI.Page
{
//public Stopwatch myStopWatch = new Stopwatch();
public DateTime startTime;
public DateTime endTime;
public TimeSpan ts_timeElapsed;
public string s_timeElapsed;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void StartButton_Click(object sender, EventArgs e)
{
//myStopWatch.Start();
startTime = DateTime.Now;
}
protected void StopButton_Click(object sender, EventArgs e)
{
//myStopWatch.Stop();
//ElapsedLabel.Text = "Time Elapsed: " + myStopWatch.Elapsed;
endTime = DateTime.Now;
ts_timeElapsed = (endTime - startTime);
s_timeElapsed = GetElapsedTimeString();
ElapsedLabel.Text = "Time Elapsed: " + s_timeElapsed;
}
public string GetElapsedTimeString()
{
int days = ts_timeElapsed.Days;
double hours = ts_timeElapsed.Hours;
double mins = ts_timeElapsed.Minutes;
double secs = ts_timeElapsed.Seconds;
string x = "";
if (days != 0)
{
x += days.ToString() + ":";
}
if (hours != 0)
{
x += hours.ToString() + ":";
}
if (mins != 0)
{
x += mins.ToString() + ":";
}
if (secs != 0)
{
x += secs.ToString();
}
return x;
}
}
}
«ASP.NET WinForms» - это противоречие в терминах. Вы имеете в виду «ASP.NET WebForms»? –
Каков результат работы GetElapsedTimeString()? – thumbmunkeys
В качестве побочного примечания вы должны использовать 'DataTime.UtcNow' для определения точек во времени. – CodesInChaos