namespace XGame.Framework.Asset
{
    /// <summary>
    /// 加载任务代理接口
    /// </summary>
    /// <typeparam name="TAsync"></typeparam>
    interface IAssetAsyncAgent
    {
        /// <summary>
        /// 获取任务。
        /// </summary>
        IAssetAsync AssetAsync
        {
            get;
        }

        /// <summary>
        /// 开始处理任务。
        /// </summary>
        /// <param name="task">要处理的任务。</param>
        /// <returns>开始处理任务的状态。</returns>
        AgentStatus Start(IAssetAsync assetAsync);

        /// <summary>
        /// 停止正在处理的任务并重置任务代理。
        /// </summary>
        void Stop();

        void Dispose();
    }
}
