コンピュータの起動時に実行する短いC#スクリプトを書きました。その機能はiTunesを監視し、私が聴いているアーティストを示すSkypeのステータスとして楽しいメッセージを表示することです。メモリを食らわずに連続したWindowsのバックグラウンドタスクを実行
iTunesAppオブジェクトを作成し、トラックがいつ変更されるかを検出するリスナーを追加します。問題は、私のアプリをバックグラウンドで開いたままにするためにwhile(true)
ループを使用する必要があるか、そうでなければ実行して終了するということです。タスクマネージャーを見て、この小さなプログラムがCPUの15〜20%を使用していることを認識するまで、これは大丈夫だと思いました!
良いアプローチがありますか?
static void Main(string[] args)
{
iTunesApp = new iTunesAppClass();
iTunesApp.OnPlayerPlayEvent += ITunesApp_OnPlayerPlayEvent;
while (true)
{ }
}
private static void ITunesApp_OnPlayerPlayEvent(object iTrack)
{
var currentArtist = iTunesApp.CurrentTrack.Artist;
if (currentArtist != LastArtist)
{
LastArtist = currentArtist;
var message = GetMessage(currentArtist);
UpdateSkypeStatus(message);
UpdateLog(message);
}
}
完全なプロジェクトがhttps://github.com/ericsundquist/SkypeTunesである:ここでは
のアイデアを得るために、コードの心臓部です。
Application.Run(); –
while(true)ループがあり、CPUの解放はありません。右の解決策ではありませんが、そのループ内にThread.sleep()コールを追加することができます。そして、正しい方法で実行できるようになるまで、少なくともCPUを解放します。 – ManoDestra
[Application.Run](https://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx)。 – IInspectable