我有一个类,我从一个缓冲区中获取一个图像,图像被设置为一个变量类型的图像,它将保存该图像。
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;但是,图像永远不会分配给picturebox,图像变量始终为空。
我已经通过在我的硬盘上用来自缓冲区的字节创建了一个图像文件来检查来自缓冲区的图像是否真的存在,并且成功地创建了图像,没有任何问题。
我做错了什么?
发布于 2013-05-24 02:25:23
我认为你可能正在遭受图像内存被释放的问题,当它的实例化对象被释放时。您是否在try/catch中捕获错误?我认为当MemoryStream对象被释放时,它被用来创建的图像也会被释放。
https://stackoverflow.com/questions/16720070
复制相似问题