"Невозможно неявно преобразовать System.Timespan в System.DateTime".
Это исключение из-за того, что тип timePicker.SelectedTime.Value равен Timespan, вы не можете напрямую преобразовать его в DateTime.
Если вы хотите сравнить две данные, вы можете преобразовать Timespan в DateTimeOffset или преобразовать часы, минуты и секунды текущего dateTime в секунды и сравнить его с timepan.
In Кроме того, вам нужно получить значение timePicker.SelectedTime.Value в потоке пользовательского интерфейса, вы можете попробовать следующий код.
private async void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
TimeSpan userTime = timePicker.SelectedTime.Value;
DateTime currentTime = DateTime.Now;
//Method one
if (userTime.TotalSeconds == currentTime.Hour * 3600 + currentTime.Minute * 60 + currentTime.Second)
{
timer.Stop();
}
//Or
//DateTimeOffset combinedValue2 = new DateTimeOffset(new DateTime(currentTime.Year, currentTime.Month, currentTime.Day) + this.timePicker.Time);
//if (currentTime.Hour == combinedValue2.Hour && currentTime.Minute == combinedValue2.Minute && currentTime.Second == combinedValue2.Second)
//{
//timer.Stop();
//}
});
}