Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Mono for Android中运行长操作时,无法显示等待消息_C#_Android_Mono - Fatal编程技术网

C# 在Mono for Android中运行长操作时,无法显示等待消息

C# 在Mono for Android中运行长操作时,无法显示等待消息,c#,android,mono,C#,Android,Mono,我正在尝试在长操作运行时通过Toast显示等待消息。我在用一个后台工作人员。 此代码位于ListView\u ItemClick事件处理程序中: var bgWait = new BackgroundWorker(); bgWait.DoWork += bgWait_DoWork; bgWait.RunWorkerAsync(); bgWait.RunWorkerCompleted += bgWait_Completed; bgWait_DoWork事件处理程序中的代码如下: private

我正在尝试在长操作运行时通过Toast显示等待消息。我在用一个后台工作人员。 此代码位于ListView\u ItemClick事件处理程序中:

var bgWait = new BackgroundWorker();
bgWait.DoWork += bgWait_DoWork;
bgWait.RunWorkerAsync();
bgWait.RunWorkerCompleted += bgWait_Completed;
bgWait_DoWork事件处理程序中的代码如下:

private void bgWait_DoWork(object sender, DoWorkEventArgs e)
{
var toastWait = Toast.MakeText(this, "Please wait", ToastLength.Long);
toastWait.SetGravity(GravityFlags.Top & GravityFlags.Center, 0, 0);
toastWait.Show();
TimeConsumingOperation();
toastWait.Cancel();
}
当我在调试模式下运行时,似乎只到达了bgWait_DoWork的第一行——“var toastWait=Toast.MakeText(这是“Please wait”,ToastLength.Long)”,然后它跳转到bgWait_完成的事件处理程序

知道为什么会这样吗


感谢您从辅助线程调用与UI相关的API(bgWait\u DoWork在辅助线程上执行)

您必须执行以下操作:

private void bgWait\u DoWork(对象发送方,DoWorkEventArgs e)
{
Toast toastWait=null;
RunOnUIThread(()=>
{
toastWait=Toast.MakeText(这是“请等待”,ToastLength.Long);
toastWait.SetGravity(GravityFlags.Top和GravityFlags.Center,0,0);
toastWait.Show();
});
TimeConsumingOperation();
RunOnUIThread(()=>
{
toastWait.Cancel();
});
}

}

我收到一个与bgWait\u工作未完成相关的错误。在bgWait_Completed中,我使用了bgWait_DoWork的一个结果,因此错误是正确的。那么,发布相关的堆栈跟踪(或mono中的任何调用),好吗?这是我在bgWait_DoWork的第一行中得到的异常消息:LocalizedMessage=“无法在未调用Looper.prepare()的线程内创建处理程序”请参阅(不是同一种语言,而是同一期)