C#を使用してIPアドレスをホスト名に非同期的に解決し、その結果をリストボックスに追加しようとしています。非同期操作は問題なく機能しますが、別のスレッドが所有しているため、解決された名前をリストボックスに追加できません。この問題を回避して、解決した名前をリストボックスに追加するにはどうすればよいですか。
これが私がこれまでにしたことです
public static ManualResetEvent GetHostEntryFinished = new ManualResetEvent(false);
private void AsyncDNSResolver(string IPString)
{
GetHostEntryFinished.Reset();
IPHostEntry host = new IPHostEntry();
host.AddressList = new IPAddress[] { IPAddress.Parse(IPString) };
Dns.BeginGetHostEntry(host.AddressList[0], new AsyncCallback(GetHostEntryCallback), host);
GetHostEntryFinished.WaitOne();
}
public static void GetHostEntryCallback(IAsyncResult ar)
{
IPHostEntry host = (IPHostEntry)ar.AsyncState;
while (!ar.IsCompleted) ;
host = Dns.EndGetHostEntry(ar);
lsvHosts.items.add(host.HostName);
GetHostEntryFinished.Set();
}