У меня есть winform
с шестью listbox
бок о бок. Под каждым listbox
есть textbox
и Button
с надписью «Добавить». Когда вы помещаете что-то в textbox
и нажмите кнопку «Добавить», используя EF, я обновляю таблицу для этого listbox
, а я возвращаю dataBind
listbox
. Вот пример одного из обработчиков событий для кнопки Add:Winform - изменение метода async/wait
private void btnOfferType_Click(object sender, EventArgs e)
{
TypeCategoryAdd("OfferType", tbOfferType.Text.Trim());
}
TypeCategoryAdd
функция приведена ниже. Я хочу, чтобы это сделать (обратите внимание await
):
private async void btnOfferType_Click(object sender, EventArgs e)
{
await TypeCategoryAdd("OfferType", tbOfferType.Text.Trim());
}
Что мне нужно сделать, чтобы сделать функцию TypeCategoryAdd
работать на различных условиях, так что winform
UI не замерзают, когда DB обновление происходит ?
private void TypeCategoryAdd (string table, string item)
{
if (string.IsNullOrEmpty(item)) return;
using (MenuGenerator.NewArchMenuGeneratorEntities con = new NewArchMenuGeneratorEntities())
{
switch (table)
{
case "OfferType":
if (con.OfferTypes.Any(x=>x.Name == item))
{
MessageBox.Show("There is already a " + item + " on the list!");
tbOfferType.Text = "";
return;
}
OfferType ot = new OfferType();
ot.Name = item;
con.OfferTypes.Add(ot);
try
{
con.SaveChanges();
tbOfferType.Text = "";
lstOfferType.DataSource = con.OfferTypes.OrderBy(x=>x.Id).ToList();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex.ToString());
}
break;
}
return;
}
Пожалуйста, уменьшите код до [минимально возможного, чтобы воспроизвести ошибку] (http://stackoverflow.com/help/mcve). –
@ StephenCleary Done. Уменьшите код до одного 'case'. Благодарим вас за помощь, отличные статьи, ваш блог и вашу книгу. – Zuzlx
@StephenCleary У некоторых, у кого было 3K rep points, пытался помочь мне, но все, что он пытался, вызвало какую-то ошибку. Поэтому он решил полностью удалить весь ответ. Поэтому я вернулся на круги своя. Если у вас есть предложения по моему вопросу, я буду благодарен. – Zuzlx