Весь смысл асинхронных методов в том, что они асинхронные, то есть они возвращаются немедленно, в то время как начатая ими работа продолжается в фоновом режиме. Если вы вызываете этот метод DeleteAllAsync
, а затем немедленно начинаете выполнять код, как если бы он завершил удаление всего, тогда, конечно, у вас будут проблемы. Если вам нужно, чтобы удаление было выполнено до того, как будет выполнен последующий код, то вам нужно дождаться завершения удаления, прежде чем выполнять этот последующий код. Способ сделать это, скорее всего, ждет ожидающих методов в вашем коде. Это:
public string DeleteAllWords()
{
conn.DeleteAllAsync<MyWords>();
return "success";
}
, вероятно, должно быть так:
public async Task<string> DeleteAllWordsAsync()
{
await conn.DeleteAllAsync<MyWords>();
return "success";
}
Это означает, что вы можете ожидать вызова этого метода:
await mywordsdatabase.DeleteAllWordsAsync();
или вы может перехватить Task
, который он возвращает, выполнить некоторый код, который не зависит от его завершения, а затем дождаться Task
позже:
var t = mywordsdatabase.DeleteAllWordsAsync();
// ...
await t;