我在C#中使用客户端/服务器应用程序。我的服务器捕获当前的鼠标游标并将它们发送到客户端,以便cleint的Cursor也相应地变化。我可以检测Windows游标并通过binaryformatter序列化它们。它工作正常,但问题是有许多游标无法像mspaint游标一样被检测到所以我必须采取其处理程序并创建光标及其x nad y热点并将它们添加到arraylist并通过网络序列化但是在10之后到15分钟,它有例外 “错误HRESULT E_FAIL已从调用COM Compeonet返回” 和cleint抛出“调用目标抛出的异常”的异常 任何人都可以告诉我出了什么问题或者更好的方法来做这样的事情 有些代码在这里
IntPtr curInfo = GetCurrentCursor();
Cursor cur;
Icon ic;
byte cursor = 0;
if (curInfo != null && curInfo.ToInt32() != 0)
{
cur = CheckForCusrors(curInfo);
try
{
if (!isLinuxClient)
{
if (cur == null)
{
PlatformInvokeUSER32.GetIconInfo(curInfo, out temp);
ic = Icon.FromHandle(curInfo);
//bitmap = ic.ToBitmap();
ArrayList ar = new ArrayList();
ar.Add(ic);
ar.Add(temp.xHotspot);
ar.Add(temp.yHotspot);
b.Serialize(stm, ar);
}
else
{
ArrayList ar = new ArrayList();
ar.Add(cur);
b.Serialize(stm, ar);
}
}
public Cursor CheckForCusrors(IntPtr hCur)
{
if (hCur == Cursors.AppStarting.Handle)
return Cursors.AppStarting;
else if (hCur == Cursors.Arrow.Handle)
return Cursors.Arrow;
.
.
.
else if (hCur == Cursors.PanWest.Handle)
return Cursors.PanWest;
return null;
}
`
答案 0 :(得分:0)
尝试处理所有创建的句柄,例如:
using(ic = Icon.FromHandle(curInfo)) {
//bitmap = ic.ToBitmap();
ArrayList ar = new ArrayList();
ar.Add(ic);
ar.Add(temp.xHotspot);
ar.Add(temp.yHotspot);
b.Serialize(stm, ar);
}