Я хочу создать приложение ASP.NET WinForms, которое отслеживает время выполнения задачи. Мне нужно иметь возможность написать форму, чтобы я мог добавить задачу в базу данных, открыть ее на новой вкладке и иметь возможность запускать, приостанавливать и останавливать задачу. Когда я закончу, мне нужно рассчитать время, необходимое для выполнения задачи. Я хотел бы увидеть на странице запущенный секундомер, показывающий часы: мин: сек, обновляющиеся каждую секунду через AJAX. Я уже посмотрел в Интернете TimeSpan, DateTime, StopWatch и т. Д., И я не могу найти ничего, что работает для меня. Я начал с простой формы с кнопками запуска и остановки. Событие _click для кнопки «Пуск» назначает мою переменную DateTime «startTime = DateTime.Now», а событие «_click» для кнопки «Стоп» назначает мою переменную DateTime «endTime = DateTime.Now». Затем я использую TimeSpan 'elapsed' для вычисления TimeSpan 'elapsed = (endTime - startTime). Когда я обновляю метку, чтобы показать истекшее время, я ожидаю получить только те секунды, которые прошли, но я получаю всю строку DateTime. Ниже мой код:
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;
}
}
}