此方法的行为很奇怪:
public T NavigateTo<T>() where T : Page
{
SetPage<T>();
Console.Clear();
CurrentPage.Display();
return CurrentPage as T;
}
发件人:https://github.com/uta-org/EasyConsole/blob/master/EasyConsole/Program.cs#L106
问题是当到达Console.Clear()
时,我继续执行(按F10键),该作用域仅从方法中退出。
如您所见,一旦我按下F10
(跳过)控制台,就会再次显示(这意味着断点执行已结束)。
为什么会这样?什么返回此方法?因为我期望有NullReferenceException
:
public MainPage(Program program)
: base("Main Page", program,
new Option("Fork Syncing (complete process)", () => program.NavigateTo<ForkSyncing>().DoLinking = null),
new Option("Fork Syncing (only cloning)", () => program.NavigateTo<ForkSyncing>().DoLinking = true),
new Option("Fork Syncing (only linking)", () => program.NavigateTo<ForkSyncing>().DoLinking = false),
new Option("Exit", () => Environment.Exit(0)))
{
}
我是按照README上作者的要求进行的。如您所见,我正在设置DoLinking属性,这不是Nullable。 (我遇到的错误是未分配DoLinking,因此我的工作流未按预期执行)。
我在Debug and Release版本上遇到了这个问题。我在.NET 4.6.1上。
编辑:
我没有意识到Intelisense IOException。但是我在“异常设置”窗口中将这个异常切换了:
@stimms的答案的建议代码:
但这更奇怪,即使抛出任何异常。
答案 0 :(得分:1)
在某些情况下,console.clear将引发IOException。
我敢打赌,Console.Clear抛出了未被捕获的IOException
。关于Console.Clear(https://docs.microsoft.com/en-us/dotnet/api/system.console.clear?view=netframework-4.7.2)的官方指南是,您应该在try / catch块中扭曲使用它。
public T NavigateTo<T>() where T : Page
{
SetPage<T>();
try{
Console.Clear();
}catch(IOException ex){
//do something
}
CurrentPage.Display();
return CurrentPage as T;
}
答案 1 :(得分:0)
尽管我收到了两次投票,但我仍然相信(而且,人们看到的是,我不理解)这是一个错误(因此,我在dotnet/roslyn repo
上创建了一个问题)。
因此,为了解决该问题,我将LandlinePhoneLens
类的CellPhoneLens
变量更改为静态变量。
然后,我执行了以下操作:
//Create the arguments to the callable function.
var data = new Dictionary<string, object>();
data["text"] = "message";
data["push"] = true;
//Call the function and extract the operation from the result.
var function = FirebaseFunctions.DefaultInstance.GetHttpsCallable("addMessage");
function.CallAsync(data).ContinueWith((task) => {
if (task.IsFaulted)
{
foreach (var inner in task.Exception.InnerExceptions)
{
if (inner is FunctionsException)
{
Debug.Log(inner.Message);
}
}
}
else
{
Debug.Log("Finished: " + task.Result.Data);
}
});
因此,如果我在致电DoLinking
之前进行设置,就不会有此问题。