バッファから画像を取得するクラスがあり、画像は画像を保持する変数型の画像に設定されています。
class MyClass
{
public Image MyImage;
private void ReadingCallBack(IAsyncResult ar)
{
Socket CurrentSocket = null;
try
{
CurrentSocket = (Socket)ar.AsyncState;
int recvsize = CurrentSocket.EndReceive(ar);
Array.Resize(ref buffer, recvsize);
string stream = ASCIIEncoding.ASCII.GetString(buffer);
switch (stream.Substring(stream.IndexOf('[') + 1, stream.IndexOf(']') - 1))
{
case "Screenshot":
byte[] imgbuff = new byte[buffer.Length - 12];
Buffer.BlockCopy(buffer, 12, imgbuff, 0, imgbuff.Length);
MemoryStream ms = new MemoryStream(imgbuff);
MyImage = Image.FromStream(ms);
ms.Close();
break;
}
buffer = new byte[1024 * 5000];
CurrentSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(ReadingCallBack), CurrentSocket);
}
catch (Exception er)
{
//etc
}
}
}
WindowsForm では、コンストラクターに次のコードがあります。 WindowsForm は、ユーザーが必要なときにいつでも呼び出されます。
MyClass Class = new MyClass();
while (Class.MyImage == null)
{
System.Threading.Thread.Sleep(1);
Application.DoEvents();
}
pictureBox1.Image = Class.MyImage;
しかし、画像がピクチャボックスに割り当てられることはなく、画像変数は常にnullです。
バッファからのバイトを使用して HDD にイメージ ファイルを作成することで、バッファからのイメージが実際に存在するかどうかを確認しましたが、イメージは問題なく正常に作成されました。
私は何を間違えましたか?