저는 버퍼에서 이미지를 가져 오는 클래스가 있으며 이미지는 이미지를 저장할 변수 유형 이미지로 설정됩니다. 내가 생성자에 다음 코드를 가지고 WindowsForm에서 클래스의 이미지를 양식의 그림 상자로 설정하십시오.
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은 사용자가 원하는 때마다 호출된다.
MyClass Class = new MyClass();
while (Class.MyImage == null)
{
System.Threading.Thread.Sleep(1);
Application.DoEvents();
}
pictureBox1.Image = Class.MyImage;
하지만, 이미지가있는 PictureBox에 할당되지 않습니다, 이미지 변수는 항상 null입니다.
버퍼에서 가져온 바이트로 내 HDD에 이미지 파일을 만들어서 이미지가 실제로 존재하는지 확인했는데 아무 문제없이 이미지가 성공적으로 만들어졌습니다.
내가 잘못 했습니까?
코드가 컴파일되지 않습니다. 올바른 'MyClass' 정의로 실제 코드를 얻으십시오. –
** 코드 **를 게시하는 것이 좋습니다 **. 그 단편에서 프로그램의 논리를 이해하는 것은 심지어 어렵습니다. –
잠깐. 코드를 업데이트하겠습니다. –