首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以禁止显示此消息吗?>>一个或多个应用程序正在使用iTunes脚本接口

我可以禁止显示此消息吗?>>一个或多个应用程序正在使用iTunes脚本接口
EN

Stack Overflow用户
提问于 2013-04-09 07:34:56
回答 1查看 3.6K关注 0票数 2

我正在写一个小的C夏普程序,以便使用iTunes Windows COM api与iTunes进行接口。我的程序必须在iTunes启动之前和iTunes关闭之后运行。我想让它使用OnQuittingEvent检测iTunes何时关闭。

代码语言:javascript
复制
    private void itunes_OnQuittingEvent()
    {
        // Remove any handlers from the iTunes COM object.
        app.OnPlayerPlayEvent -= itunes_OnPlayerPlayEvent;
        app.OnQuittingEvent -= itunes_OnQuittingEvent;
        bniTunesRunning = false;
        // Release the COM object.
        app = null;
        Console.WriteLine("iTunes Closing!");
    }

然而,随着我的c夏普程序运行,当我关闭iTunes时,我收到一条警告消息:“一个或多个应用程序正在使用iTunes脚本接口”,然后在iTunes关闭前进行20秒的倒计时。

我的问题是:在关闭iTunesApp应用程序时,是否可以使用iTunes Windows COM OnQuittingEvent事件处理程序在Can代码中取消实例化iTunesApp对象引用,从而使该警告消息不会出现在屏幕上??有没有办法完全抑制该警告消息?

这里提出了一个类似的问题:How to suppress "There are still active COM objects in this application" error when closing application?,但代码是C++,而不是C。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-24 11:50:53

为了防止对话,您需要减少运行时可调用包装器引用计数,然后强制收集您的iTunesAppClass引用。有关更多详细信息,请参阅用户Bonj here的帖子。与他们的示例不同,我发现在收集之前没有必要将iTunesAppClass引用设置为null。然而,这可能取决于您的实现。我还发现我不必在循环中递减RCW,因为我只引用了一个COM对象。下面是一个在我的应用程序中工作的示例:

代码语言:javascript
复制
var app = new iTunesLib.iTunesAppClass();

// do stuff

System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.GC.Collect();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15890873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档