public Task<Progressive.PecaStarter5.Plugins.BroadcastingParameter> BroadcastAsync(
            IPeercast peercast, IEnumerable<IExternalYellowPages> externalYellowPagesList,
            IYellowPages yellowPages, int? acceptedHash,
            Dictionary<string, string> yellowPagesParameter,
            BroadcastParameter parameter, IProgress<string> progress)
        {
            return Task.Factory.StartNew(() =>
            {
                // YPの更新確認
                ThrowIfYellowPagesUpdatedAwait(yellowPages, acceptedHash, progress);

                // 開始
                var broadcastedParameter = StartBroadcastAwait(peercast, parameter,
                    yellowPages, yellowPagesParameter, progress);

                // 外部YPに通知
                if (yellowPages.IsExternal)
                {
                    try
                    {
                        Find(externalYellowPagesList, yellowPages.Name)
                            .OnBroadcastedAsync(broadcastedParameter).Wait();
                    }
                    catch (Exception ex)
                    {
                        peercast.StopAsync(broadcastedParameter.Id).Wait();
                        throw ex;
                    }
                }

                progress.Report("チャンネルを作成しました");
                return broadcastedParameter;
            });
        }
        public Task<Progressive.PecaStarter5.Plugins.StoppedParameter> StopAsync(
            IPeercast peercast, IEnumerable<IExternalYellowPages> externalYellowPagesList,
            IYellowPages yellowPages, Dictionary<string, string> yellowPagesParameter,
            string name, string id, IProgress<string> progress)
        {
            return Task.Factory.StartNew(() =>
            {
                // 停止
                progress.Report("通信中...");

                var stoppedParameter = new Progressive.PecaStarter5.Plugins.StoppedParameter
                {
                    Name = name,
                    Id = id,
                    YellowPagesParameters = yellowPagesParameter
                };

                // 外部YPに通知
                if (yellowPages.IsExternal)
                {
                    Find(externalYellowPagesList, yellowPages.Name).OnStopedAsync(stoppedParameter).Wait();
                }

                peercast.StopAsync(id).Wait();

                progress.Report("チャンネルを切断しました");
                return stoppedParameter;
            });
        }