使用析构函数调用异步网络作业

时间:2019-02-07 18:09:33

标签: c# destructor

基本上,我有一堂课,可以根据需要上传照片;通常以用户可以在闲暇时添加照片的形式。

当类的实例完成时(通常是在窗体关闭时),我希望它自动运行处理(压缩等)照片的Web作业。我不希望每次他们添加照片时都触发网络作业。我还希望避免要求调用代码显式调用触发Web作业的照片处理类中的方法-尽管您可能会告诉我这样做是正确的方法。

我阅读的文档表明析构函数用于释放资源,但是它也可以用于调用不再需要该对象之后要执行的特定任务吗?

这是基本概念:

public class DoSomething
    {

    DoSomething()
    {
        //initialize
    }

    public void DoTheActualThing()
    {
        //Upload photos to cloud as needed
    }

    ~DoSomething()
    {
        //Call Async web job to process photos into zip
        PostImageSyncDate(_SyncPhotoData)
    }

}

//异步方法在单独的服务类中

    public async Task<bool> PostImageSyncData(ProjectModel syncPhotosData)//, JObject token = null)
    {
        try
        {

            string serializedData = JsonConvert.SerializeObject(syncPhotosData);
            StringContent content = new StringContent(serializedData, Encoding.UTF8, "application/json");

            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(_URL);
                var response = await client.PostAsync("CustomImageSync", content);
                return response.IsSuccessStatusCode;
            }

        }
        catch (Exception ex)
        {
            if (ex == null) throw;
            return false;
        }
    }

0 个答案:

没有答案