非同期呼び出しを行い、データセットを取り戻すC#コードがあります。私はこれを行うので、WindowsのデスクトップUIは、ハングしていない/フリーズ中に取得されています。私は今、VB.NETで同じことをする必要があるが、それは私にエラーを与えるオンラインコードコンバータを介して入れた後。C#からVBへのコードコンバータを使用して正しく渡されない非同期スレッディング
Delegate 'Func(Of String、Boolean、DataSet)'では、コンストラクタの唯一の引数として 'AddressOf'式またはラムダ式が必要です。
変換前と変換後のコードです。後
var DataFunc = new Func<string, string, DataSet> (getData);
IAsyncResult Result = DataFunc.BeginInvoke(barCodeResult, orderType, null, null);
DataSet ds = DataFunc.EndInvoke(Result);
::前
Dim DataFunc As var = New Func(Of String, String, DataSet)(getData)
Dim Result As IAsyncResult = DataFunc.BeginInvoke(barCodeResult, orderType, Nothing, Nothing)
Dim ds As DataSet = mtrDataFunc.EndInvoke(Result)
はあなたの洞察力のために事前にありがとうございました。
かわりに、コンバータを使用しての言語を理解する必要があります。ほとんどの.NETコードはC#で書かれています。オリジナルのC#コードは*良い*ではありません。私はそれが非常に古いプロジェクトからコピーされたと思われる。あなたはそれを 'var result = await Task.Run(()=> getData(barCodeResult、orderType));'に置き換えることができます。 VB.NETの同等の機能は、 'Dim result = Await Task.Run(Function()getData(barCodeResult、orderType))')です。 ' –
' getData'は何をしますか?関数がデータベース応答を待っている場合、バックグラウンドで何かを実行する必要はありません。 ADO.NET自体は、非同期操作をサポートしています。たとえば、 'SqlCommand.ExecuteReaderAsync'を使用してリーダーを非同期で返すことができます –
私の答えが問題を解決するなら、私の投稿の左にあるチェック/マークを押して"受け入れ "とマークしてください。詳細については、参照してください:[**どのように答えを受け入れるのですか?**](https://meta.stackexchange.com/a/5235) –