А также:
Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll
Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll
Вызвано исключение: "System.ObjectDisposedException" в System.Private.CoreLib.dll
Я нашел в каких строчках проблема (по крайней мере когда я их убираю код работает), но я уже все что знаю перепробовал, чтобы исправить это.
public async Task<string> RecieveWallInfo()
{
var a = await client.GetStringAsync("");
var wall = JsonConvert.DeserializeObject<Wall>(a);
var wallDate = DateTimeExtensions.FromUnixTime(wall.response.items[0].date);
if (wallDate.Day == DateTime.Now.Day)
{
StreamInfo streamInfo = await db.StreamInfos.FirstOrDefaultAsync(x => x.date == wall.response.items[0].date);
if (streamInfo == null)
{
await db.StreamInfos.AddAsync(new StreamInfo { count = 1, date = wall.response.items[0].date });
await db.SaveChangesAsync();
return wall.response.items[0].text;
}
return "0";
}
return "0";
}
Если убрать FirstOrDefaultAsync (строчка с этим) то все работает. Наверняка я что-то намудрил с асинхронными методами. Но понятия не имею что, вроде все также как и у всех ответах на вопросы с похожими проблемами. Возвращаю Task, добавил await, сделал асинхронным все. Не хочет.
В кратце о том, что мне нужно. Пинговать апи каждую минуту (я вызываю этот метод раз в минуту) и проверять для начала, пост был сегодня? Затем я проверяю записан ли в бд пост с такой же датой (чтобы не записывать один пост каждую минуту). Ну и на этом все. К Callback API подключиться не получится. Нельзя. Так как со сторонней страницей работаю.
Вот здесь вам тоже await нужен
using (db = ...)
{
string result = await RecieveWallInfo();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей