c# BeginInvoke 出错

LOVE_GG 2011-09-05 01:18:30
之前一直都是以这种方式处理跨线程更新UI的。但是今天我在新建的线程中要用BeginInvoke来处理UI线程中的更新时,却总是报错。代码如下:
BeginInvoke(new Action(() =>
{
FolderSmallView(_folderList);
FileSmallView(_currentPlayLessonList);
})); 
执行的FolderSmallView(_folderList);和FileSmallView(_currentPlayLessonList);就是需要更新UI。

错误:
使用泛型 类型" System.Action<T>" 需要"1"个类型实参。
请高手指点,谢谢。
...全文
508 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
星尘羽落 2012-08-28
  • 打赏
  • 举报
回复
我试了一下,如果工程改用.NET3.5就没问题,用2.0就报需要实参。。。
LOVE_GG 2011-10-24
  • 打赏
  • 举报
回复
至今没有找到原因。通过自定义委托来实现了。
LOVE_GG 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 copelis 的回复:]

begininvoke 需要外部传递参数,或者有设置参数的函数
[/Quote]
对啊,报错的意思就是说需要参数。可是之前我一直都是这样用的,一样的带按摩,就里面更新界面的函数不一样而已,从来都不报错。现在要报错了,说需要参数。我就搞不懂是怎么回事了
LOVE_GG 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fangxinggood 的回复:]

Action action = () =>
{
FolderSmallView(_folderList);
FileSmallView(_currentPlayLessonList);
};

BeginInvoke(action);
[/Quote]
不得行,还是报之前同样的错误。我自己定义了个委托来解决这个问题。不过要麻烦些
LOVE_GG 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fangxinggood 的回复:]

没必要用 new Action( ... ) 呀。直接

BeginInvoke(() =>
{
FolderSmallView(_folderList);
FileSmallView(_currentPlayLessonList);
});
[/Quote]
不得行啊,要报错。
无法将 lambda 表达式转换为类型"System.Delegate" ,因为它不是委托类型
机器人 2011-09-05
  • 打赏
  • 举报
回复
没必要用 new Action( ... ) 呀。直接

BeginInvoke(() =>
{
FolderSmallView(_folderList);
FileSmallView(_currentPlayLessonList);
}); 
LOVE_GG 2011-09-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mabaolin 的回复:]

参数定义不正确
[/Quote]
我没有参数啊,只是在新建的线程里面,想要调用更新主界面的函数,所以采用的那种方式。一直我都这样用的,也没有出过问题。不知道怎么的,这个工程里面,同样的方式,就报这样的错误。
mabaolin 2011-09-05
  • 打赏
  • 举报
回复
参数定义不正确
LOVE_GG 2011-09-05
  • 打赏
  • 举报
回复
没人呢
copelis 2011-09-05
  • 打赏
  • 举报
回复
begininvoke 需要外部传递参数,或者有设置参数的函数
机器人 2011-09-05
  • 打赏
  • 举报
回复
Action action = () =>
{
FolderSmallView(_folderList);
FileSmallView(_currentPlayLessonList);
};

BeginInvoke(action);

17,748

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧