c# - async await exception catching - which thread am I on? -
i'd this:
public async task<int> dowork(int parameter) { try { await operationthatmaycompletesynchronously(parameter); } catch(exception) e { if(completedsynchronously) dosyncthing(); else doasyncthing(); } } note: i'm running tasks on thread pool, there no async context.
i'd able tell difference between exception thrown immediately, , i'm still on calling thread (e.g. parameter invalid causing function abort), , exception thrown when async task completes, , i'm on other random callback thread (e.g. network failure)
i can work out how might achieve if didn't use await, , used continuewith on async operation, possible using await?
store task in variable:
var task = operationthatmaycompletesynchronously(parameter); //may throw then await it:
await task; //may throw that way can differentiate between 2 origins potential exception.
note, async methods never throw directly. pass exceptions through task return. true "validation" throws execute before first await.
Comments
Post a Comment