listbox
と並んでwinform
があります。それぞれlistbox
には、「追加」というラベルのtextbox
とButton
があります。 textbox
に何かを入れ、EFを使用して追加ボタンを押すと、listbox
のテーブルが更新され、のlistbox
が返されます。 [追加]ボタンのイベントハンドラのサンプルを次に示します。Winform - メソッドをasync/awaitに変更する
private void btnOfferType_Click(object sender, EventArgs e)
{
TypeCategoryAdd("OfferType", tbOfferType.Text.Trim());
}
TypeCategoryAdd
機能は以下のとおりです。私はこれをしたい(await
気づく):
winform
UIがフリーズしないように、私は別のコンテキストで実行する
TypeCategoryAdd
機能させるために何をする必要がありますどのような
private async void btnOfferType_Click(object sender, EventArgs e)
{
await TypeCategoryAdd("OfferType", tbOfferType.Text.Trim());
}
?
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完了。コードを1つの 'case'に減らしてください。あなたの助け、素晴らしい記事、あなたのブログ、あなたの本をありがとう。 – Zuzlx
@StephenCleary 3Kポイントを持っていた人が私を助けようとしましたが、試したことで何らかのエラーが発生しました。そこで、彼は答え全体を完全に削除することに決めました。だから私は正方形に戻ってきた。あなたが私の質問に何か提案があれば、私は感謝するでしょう。 – Zuzlx