• 4492阅读
  • 2回复

c# 多线程调用aplayer的问题 [复制链接]

上一主题 下一主题
离线wynfrith
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-11-16

由于某些功能的需要, 我在新线程中调用了player的play方法,本来在本机上没有问题, 然后到另一台机器上测试的时候, 每当我运行到这段代码, 就崩溃..
代码如下:
Thread t = new Thread(SetPlay);
t.Start();
public void SetPlay()
{
       this.vicePlayer.Play();
  }


堆栈信息:


离线aplayer

只看该作者 沙发  发表于: 2015-11-16
APlayer的接口不是线程保护的,原则上所有接口方法都需要在主线程中调用,如果你是其他线程想要控制,可以用 PostMessage 的方式通知主线程。

离线wynfrith

只看该作者 板凳  发表于: 2015-11-16
对win32Api不熟悉, 不过最后用委托解决了

private void Call(MethodInvoker method) {
    if(InvokeRequired)
          Invoke(method);
    else method();
}

然后创建一个线程
new Thread( new ThreatStart( () => {
    Call(() => { this.player.Play(); });
}));
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个