[VB.NET]关于多线程和截图保存的问题!

本文探讨了在使用多线程进行截图并保存时遇到的“未将对象引用设置到对象实例”错误。通过分析代码及跨线程操作原理,提供了一种解决方案:使用委托来确保UI线程的操作。

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

VB.NET源码-156个实用实例哦…… <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
关于多线程和截图保存的问题!
问题是这样的,以下的几行代码,如果我在form_load事件中就能正常运行,而当我用多线程,单独创建一个线程运行时,老是会在第四行处,提示"未将对像引用设置到对像实例" 请问,,这到底是怎么回事呢?

My.Computer.Keyboard.SendKeys("^{prtsc}", True)
Dim img As Image
img = My.Computer.Clipboard.GetImage
img.Save("c:/tmp.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
__________________________________________________________________________
问题是这样的,以下的几行代码,如果我在form_load事件中就能正常运行,而当我用多线程,单独创建一个线程运行时,老是会在第四行处,提示"未将对像引用设置到对像实例" 请问,,这到底是怎么回事呢?

My.Computer.Keyboard.SendKeys("^{prtsc}", True)
Dim img As Image
img = My.Computer.Clipboard.GetImage
img.Save("c:/tmp.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
__________________________________________________________________________
晕啊....沉得这么快..自己顶上去先...
__________________________________________________________________________
晕死...没人回答呀....
__________________________________________________________________________
你的操作跨线程操作了,用委托。
Delegate Sub t1()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim thread As New Thread(AddressOf test)
thread.Start()
End Sub
Sub test()
Me.BeginInvoke(New t1(AddressOf t2))
End Sub
Sub t2()
My.Computer.Keyboard.SendKeys("^{prtsc}", True)
Dim img As Image
img = My.Computer.Clipboard.GetImage
img.Save("c:/tmp.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
End Sub
__________________________________________________________________________
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值