我有一个按钮,我想禁用3秒钟,这样它就不会被滥用。我想添加一个Timer(3000);
内的Click
事件,但我发现的示例代码是使用过时的方法,是行不通的。我尝试了另一个代码(可以在下面找到),但这抛出System.Runtime.InteropServices.COMException: 'The application called an interface that was marshalled for a different thread. (0x8001010E (RPC_E_WRONG_THREAD))'
错误。
private void CodeButton_Click(object sender, RoutedEventArgs e)
{
CodeButton.IsEnabled = false;
var timer = new Timer(3000);
timer.Elapsed += (timer_s, timer_e) =>
{
CodeButton.IsEnabled = true;
timer.Dispose();
};
timer.Start();
Launcher.LaunchUriAsync(new Uri("https://www.hoppie.nl/acars/system/register.html"));
}
1条答案
按热度按时间oknrviil1#
你需要使用主线程(示例化UI组件的线程)来更新UI。你得到这个错误是因为计时器将与另一个线程一起工作,而不是主线程。
您可以这样做: