小编use*_*438的帖子

如何防止方法跨多个线程运行?

我正在开发一个Web应用程序,其中有几个用户可以更新相同的记录.因此,如果用户同时更新同一记录,以避免出现问题,我将其更改保存在队列中.当每次保存发生时,我想调用一个在另一个线程上处理队列的方法,但我需要确保该方法不能在另一个线程中再次调用时运行.我已经阅读了几篇关于这个主题的帖子,但不确定什么对我的情况最好.以下是我现在的代码.这是处理它的正确方法吗?

public static class Queue {
    static volatile bool isProcessing;
    static volatile object locker = new Object();

    public static void Process() {
        lock (locker) {
            if (!isProcessing) {
                isProcessing = true;

                //Process Queue...

                isProcessing = false;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

5
推荐指数
1
解决办法
8269
查看次数

Gzip并上传到Azure blob

我正在尝试gzip并将静态js文件上传到Azure blob,但我最终得到一个0字节的blob.有人能告诉我我做错了什么吗?

var filePath = "C:\test.js";

using (var compressed = new MemoryStream()) {
using (var gzip = new GZipStream(compressed, CompressionMode.Compress)) {
    var bytes = File.ReadAllBytes(filePath);
    gzip.Write(bytes, 0, bytes.Length);

    var account = CloudStorageAccount.Parse("...");
    var blobClient = new CloudBlobClient(account.BlobEndpoint, account.Credentials);
    var blobContainer = blobClient.GetContainerReference("temp");
    var blob = blobContainer.GetBlockBlobReference(Path.GetFileName(filePath));
    blob.Properties.ContentEncoding = "gzip";
    blob.Properties.ContentType = "text/javascript";
    blob.Properties.CacheControl = "public, max-age=3600";

    blob.UploadFromStream(compressed);
}
}
Run Code Online (Sandbox Code Playgroud)

gzip azure c#-4.0

4
推荐指数
1
解决办法
2817
查看次数

标签 统计

azure ×1

c# ×1

c#-4.0 ×1

gzip ×1

multithreading ×1