我最近在Mahapps Metro上提出了关于潜在空引用异常的拉取请求
情况就是这个
Action cleanUpHandlers = null;
var cancellationTokenRegistration = DialogSettings.CancellationToken.Register(() =>
{
cleanUpHandlers();
tcs.TrySetResult(ButtonStyle == MessageDialogStyle.Affirmative ? MessageDialogResult.Affirmative : MessageDialogResult.Negative);
});
cleanUpHandlers = () => {...
您可以看到DialogSettings.CancellationToken
在DialogSettings.CancellationToken.Register()
尝试调用cleanUpHandlers()
之前取消Action cleanUpHandlers = new Action(()=>{});
。
我建议的修复
var cancellationTokenRegistration = DialogSettings.CancellationToken.Register(() =>
{
if(cleanUpHandlers != null) cleanUpHandlers();
tcs.TrySetResult(ButtonStyle == MessageDialogStyle.Affirmative ? MessageDialogResult.Affirmative : MessageDialogResult.Negative);
});
我的问题是这是一个更好/更糟的解决方案
var cancellationTokenRegistration = DialogSettings.CancellationToken.Register(() =>
{
cleanUpHandlers?.Invoke();
tcs.TrySetResult(ButtonStyle == MessageDialogStyle.Affirmative ? MessageDialogResult.Affirmative : MessageDialogResult.Negative);
});
或C#6
Operator
我认为有相当接近的等价物并且是我自己的项目我不会发布这个问题,但是我对这样一个项目的第一次贡献并且想要做对了