【发布时间】:2015-10-28 20:46:05
【问题描述】:
我有一个异步函数,我想在任务完成后关闭 ProgressDialog。我看到它是在 onPostExecute 方法中完成的,但是我没有异步类来实现它。就我而言,它是异步方法
public async void ScanBarcode()
{
dialogIndicator.Show ();
var zscanner = new MobileBarcodeScanner();
//var result = await zscanner.Scan();
var result = await zscanner.Scan ();
HandleScanResult(result);
}
void HandleScanResult(ZXing.Result result)
{
dialogIndicator.Dismiss ();
}
App 为 dialogIndicator.Dismiss (); 抛出异常。我明白了
"Android.Util.AndroidRuntimeException: Only the original thread that created a view hierarchy can touch its views.
at --- End of managed exception stack trace ---
at android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7155)
at at android.view.ViewRootImpl.doDie(ViewRootImpl.java:6255)
at at android.view.ViewRootImpl.die(ViewRootImpl.java:6240)
at at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:365)
at at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:320)
at at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:84)
at at android.app.Dialog.dismissDialog(Dialog.java:420)
at at android.app.Dialog$1.run(Dialog.java:128)
at at android.os.Handler.handleCallback(Handler.java:733)
at at android.os.Handler.dispatchMessage(Handler.java:95)
at at android.os.Looper.loop(Looper.java:146)
at at android.app.ActivityThread.main(ActivityThread.java:5731)
at at java.lang.reflect.Method.invokeNative(Native Method)
at at java.lang.reflect.Method.invoke(Method.java:515)
at at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at at dalvik.system.NativeStart.main(Native Method)
在这种情况下如何关闭 ProgressDialog。
【问题讨论】:
标签: android xamarin async-await progressdialog