【发布时间】:2019-10-24 03:54:51
【问题描述】:
我正在尝试使用 Gtk# GUI 在 C# 上显示一些文本,每秒一行。 文本在 .txt 文件中,每行有 4 个整数。
但是当我在 DragonFly BSD 上编译它时,前一两行在文本框上完美显示,但程序停止,并且出现 SIGABRT 和 SIGSEGV 错误。
所以我在 Windows 上编译了相同的代码,它有这个错误:'System.AccessViolationException' 的异常或类似的东西。
我检查了“允许不安全代码”,但结果是一样的。
async void DisplayText(string FileName)
{
string[] Temp = File.ReadAllLines(FileName);
string[] ScoreBoard = new string[4];
TextIter Ti = textview.Buffer.StartIter;
foreach (string Line in Temp)
{
ScoreBoard = Line.Split('\t');
await Task.Delay(1000);
textview.Buffer.Insert(ref Ti, ScoreBoard[0]);
textview.Buffer.Insert(ref Ti, " | ");
textview.Buffer.Insert(ref Ti, ScoreBoard[1]);
textview.Buffer.Insert(ref Ti, "\t");
textview.Buffer.Insert(ref Ti, ScoreBoard[2]);
textview.Buffer.Insert(ref Ti, " | ");
textview.Buffer.Insert(ref Ti, ScoreBoard[3]);
textview.Buffer.Insert(ref Ti, "\n");
}
}
其他部分代码完美运行,但是在这部分出现错误。
如果我删除“async”和“await Task.Delay(1000);”,它没有错误,但我想每秒显示 1 行。
我该如何解决?
【问题讨论】:
-
GTK# 不喜欢在主线程之外运行,你是在工作线程中运行它吗?
标签: c# mono monodevelop gtk#