C# 多线程 STA单线程 发送图片 剪贴板 问题处理

本文详细介绍了在C#中使用多线程处理STA单线程剪贴板发送图片时遇到的问题及其解决方案。包括图文发送思路、剪贴板错误处理、线程同步及对话框报错的解决方法,确保在多线程环境下图片和文字的正确发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近把套接字发送图片功能完成了,其间如何发送图片及遇到了很多问题,在此将其列出以作参考:

发送图片思路:获得图片路径,然后将路径读取成字节流组,接下来把图片转换成base64的字符串,然后将这个base64的字符串通过JsonConvert序列化(其实这里没必要序列化,主要是服务器接收图片的字节流时无法确定该字节流大小所以一般会给一个10000+的大小(目前不考虑图片分组发送),但是这样很容易让规定的字节流组很多浪费,所以一开始就base64将图片里面有0的字节也变成字符串然后序列化成字节流组发送,这样服务器接收的字节流组的有效信息没有0的,然后此时就可以放心的把自己规定的10000+的大小字节组浪费的部分全部remove 0,然后移除后的字节流组也就全是有效信息了),然后服务器接收的字节流组先把它反序列化,然后frombase64成字节流组(这是真正的图片的流信息),接着

MemoryStream SavaImg = new MemoryStream();//实例化内存流
                        SavaImg.Write(ContentByte, 0, ContentByte.Length);//将图片字节组(ContenByte)从头到尾放进这个内存流中
                        SavaImg.Position = 0;//令读取位置回到0,防止之后读取值错误
                        Bitmap bitmap = new Bitmap(SavaImg);//然后把该内存流放进bitmap里面

 Clipboard.SetDataObject(bitmap, false, 5, 10);//将图片的流信息放入剪贴板&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值