Knowledged Ответов: 1

Несколько таймеров, которые запускаются каждый специально C# WPF


Поэтому я пытаюсь добавить таймер в новый столбец "длительность", который вычитает время начала, которое является датой, и отображает, как долго он был активен. Пока что это то, что у меня есть:

код XAML:

<DataGridTextColumn Binding="{Binding BlockName}" Header="Block" Width="200"/>
    <DataGridTextColumn Binding="{Binding Auditor}" Header="Auditor" Width="200"/>
    <DataGridTextColumn Binding="{Binding AcctAuditor}" Header="Accounting Auditor" Width="200"/>
    <DataGridTextColumn Binding="{Binding BlockLeader}" Header="Block Leader" Width="200"/>
    <DataGridTextColumn x:Name="TimeStarted" Binding="{Binding TimeStarted}" Header="Started" Width="200"/>
    <DataGridTextColumn x:Name="Duration" Header="Elapsed Time" Width="200"/>


с фоновым кодом:


System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();

private void dispatcherTimer_Tick(object sender, EventArgs e)
{
	foreach (DataRowView dr in BlockStatus.ItemsSource)
		{
		var diff = dr.Row.Field<DateTime>("TimeStarted").Subtract(DateTime.Now);
		if (diff.TotalSeconds > 0)
		{
		    dr.Row["Duration"] = string.Format("{0} d {1:D2}:{2:D2}:{3:D2}", diff.Days, diff.Hours, diff.Minutes, diff.Seconds);
		}
		else
		{
		    dr.Row["Duration"] = "0 d 00:00:00";
        }
    }
}



Я пытаюсь создать столбец, который будет подсчитываться в mm:ss в новом столбце, основанном на другом столбце.

Вот картинка из примера: https://prnt.sc/q2vrw3[^]

Что я уже пробовал:

Я уже спрашивал раньше, но я переформулировал и, надеюсь, объяснил это достаточно хорошо

Gerry Schmitz

Вот ваш "таймер": Дата-Время.Теперь - время старта;

Knowledged

но я бы хотел, чтобы он был разным для каждой строки в listview

johannesnestler

Да, так в чем же ваш вопрос или проблема с этим? (то, что показал Джерри, было, конечно, только для одного таймера (у вас есть разное время запуска, массив или что-то еще - вы не показали никакого кода). Я думаю, что понимаю, чего ты хочешь, но не понимаю, где ты застрял...

Knowledged

обновлен весь вопрос.

George Swan

Могу ли я спросить, какое действие останавливает таймеры? Это нажатие кнопки на кнопку, которая запустила его?

Knowledged

Нет, это была бы другая кнопка, которая останавливает его, как показано здесь: https://prnt.sc/q2vn9r

1 Ответов

Рейтинг:
0

#realJSOP

Система Google.Реактивный (также называемый RX). Это пакет NuGEt. Я использовал его в проекте, который планирует задания sql.

Google Ssstem.Реактивный[^]

Вы также можете посмотреть статью, которую я написал здесь на CP - SQLXAgent - задания для SQL Express - Часть 4 из 6[^]