i have method
public async task dosomething() inside method have code:
showspinner(); await system.threading.tasks.task.run(() => { try { getvalue = value(); } catch(exception ex) { } { hidespinner(); } }); the showspinner() , hidespinner() overlays prevent user interacting screen , show spinning wheel indicate loading.
i getting error:
uikit consistency error: calling uikit method can invoked ui thread.
i know because of hidespinner(). how can around consistency error?
there 2 things can here, preferred method await task inside try block, , second less preferred method wrap hidespinner(); in runonuithread.
preferred
showspinner(); try { var val = await task.run(() => "foo"); // little added performance, // if val isn't being marshalled ui // can use .configureawait(false); // var val = await task.run(() => "foo").configureawait(false); } catch { /* gulp */} { hidespinner(); } less preferred
showspinner(); await task.run(() => { try { var val = "value"; } catch { /* gulp */ } { invokeonmainthread(() => { hidespinner(); }); } });
Comments
Post a Comment