怎样访问另外一个线程的对象?

iamcooky 2008-05-22 06:48:20
我在winform程序里,使用mediaplayer对象(.net3.5),mediaplayer对象是在FormMain中实例化的,使用另外一个线程控制它时,出现错误提示:The calling thread cannot access this object because a different thread owns it.
请问这是什么问题啊,该如何解决?
怎样能够防卫另外一个线程的对象?
...全文
90 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamcooky 2008-05-22
  • 打赏
  • 举报
回复
问题解决了,多谢1楼:)
tianrui456 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iamcooky 的回复:]
DoShowStatus是不是需要是静态方法呢?
[/Quote]
不需要,只要在线程中可以看到就可以了 具体就是这个函数在mainform中设计,用public就可以
ILOVEYOULOVEME 2008-05-22
  • 打赏
  • 举报
回复
学习了.....
iamcooky 2008-05-22
  • 打赏
  • 举报
回复
DoShowStatus是不是需要是静态方法呢?
我姓区不姓区 2008-05-22
  • 打赏
  • 举报
回复
1楼正解,需要用委托实现
tianrui456 2008-05-22
  • 打赏
  • 举报
回复


//定义代理ShowStatus
private delegate void ShowStatus(string str);
ShowStatus showStatus = new ShowStatus(DoShowStatus);

//用来更新界面元素的函数
private void DoShowStatus(string txt)
{
lock (this)
{
//sta_SysStatus是界面控件
sta_SysStatus.Text = txt;
}
}

//调用
//其它线程中调用
mainform.BeginInvoke(showStatus);


原理是这样的,用委托来调用其它线程的函数

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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