我可以屏蔽此消息吗?在比;一个或多个应用程序正在使用iTunes脚本界面
本文关键字:应用程序 界面 脚本 iTunes 一个 消息 屏蔽 在比 我可以 | 更新日期: 2023-09-27 18:08:03
我正在写一个小的C Sharp程序,使用iTunes的Windows COM api与iTunes接口。我的程序必须在iTunes启动前和iTunes关闭后运行。我想让它检测iTunes何时关闭使用OnQuittingEvent。
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 sharp程序运行时,当我关闭iTunes时,我得到一个警告信息:"一个或多个应用程序正在使用iTunes脚本界面",然后在iTunes关闭前20秒倒计时。
我的问题:我可以使用iTunes Windows COM OnQuittingEvent事件处理程序,在我关闭iTunes应用程序时,在我的C sharp代码中对iTunesApp对象引用进行非实例化,从而不会在屏幕上出现警告信息吗?有没有一种方法可以完全抑制警告信息?
这里问了一个类似的问题:如何抑制"此应用程序中仍有活动的COM对象";关闭应用程序时出错?但是代码是c++而不是C Sharp。
谢谢。
为了防止对话框,你需要减少运行时可调用的包装器引用计数,然后强制收集你的iTunesAppClass引用。有关更多细节,请参阅用户Bonj的帖子。与他们的例子不同,我发现在收集之前没有必要将iTunesAppClass引用设置为null。不过,这可能取决于您的实现。我还发现我不必在循环中递减RCW,因为我只引用了一个COM对象。下面是一个在我的应用程序中起作用的例子:
var app = new iTunesLib.iTunesAppClass();
// do stuff
System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
System.GC.Collect();