c# - Cancel a static async function with a timeout -


i need cancel updatedatabase() function if takes more 2 minutes. 've tried cancellationtokens , timers couldn't manage solve (couldn't find appropriate example).

could please me on this?

app.xaml.cs

protected override async void onlaunched(launchactivatedeventargs args) {    await performdatafetch(); }  internal async task performdatafetch() {    await localstorage.updatedatabase(); } 

localstorage.cs

public async static task<bool> updatedatabase() {   await ..// download files   await ..// check files   await ..// run controles } 

edited classes according answers.

app.xaml.cs stays same. updatedatabase() edited , new method runupdate() added in localstorage.cs:

public static async task updatedatabase() {     cancellationtokensource source = new cancellationtokensource();     source.cancelafter(timespan.fromseconds(30)); // how time has update process     task<int> task = task.run(() => runupdate(source.token), source.token);      await task; }  private static async task<int> runupdate(cancellationtoken cancellationtoken) {     cancellationtoken.throwifcancellationrequested();     await ..// download files     cancellationtoken.throwifcancellationrequested();     await ..// check files     cancellationtoken.throwifcancellationrequested();     await ..// run controles } 

i know not way , better point start newbies me.

you need pass cancellationtoken updatedatabase function , check token after each await calling throwifcancellationrequested. see this


Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -