小编h.o*_*a.n的帖子

如何在没有Task.Result的情况下通过await获取异步方法的确切结果?

我想尝试异步和等待,但我有一个惨败.我有方法需要异步运行两个方法(它部分工作)

public void Run()
{
            Task[] tasks = new Task[2];
            tasks[0] = Task.Factory.StartNew(DisplayInt);
            tasks[1] = Task.Factory.StartNew(DisplayString);

            //block thread until tasks end
            Task.WaitAll(tasks);
}
Run Code Online (Sandbox Code Playgroud)

并使用了两种方法

public async void DisplayInt()
    {
        Task<int> task = new Task<int>(
            () => 10);
        task.Start();
        Console.WriteLine(await task);
    }

    public async void DisplayString()
    {
        Task<string> task = new Task<string>(
           () => "ok" );
        task.Start();
        Console.WriteLine(await task);
   }
Run Code Online (Sandbox Code Playgroud)

通常我得到下一个结果:1)10 ok

或2)确定10

但有时我什么都没有

如何在不使用task.Result的情况下通过等待获得异步方法的确切结果,或者它不会发生?

c# async-await

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

如果我使用MemoryStream,它为什么Azure UploadFromStream不起作用(它工作但长度等于0)?

我上课了

public class TextCorpusFile
{
    public int Id {get; set;}
    public string FileType {get; set;}
    public MemoryStream File {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试将文件上载到Azure Blob存储,则文件的长度等于0.(文件已创建,但长度为0)

public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
    //get container by default 
    CloudBlobContainer textCorpusContainer =
        ReturnTextCorpusFileContainer();

    CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);

    blockBlob.UploadFromStream(textCorpusFile.File);

}
Run Code Online (Sandbox Code Playgroud)

但是如果我按字节发送文件,它运行良好,长度不是0.

public void SendTextCorpusFileData(TextCorpusFile textCorpusFile)
{
    //get by default
    CloudBlobContainer textCorpusContainer =
        ReturnTextCorpusFileContainer();

    CloudBlockBlob blockBlob = textCorpusContainer.GetBlockBlobReference(textCorpusFile.Id + POINT + textCorpusFile.FileType);

    blockBlob.UploadFromByteArray(textCorpusFile.File.ToArray(),
        0,
        (int)textCorpusFile.File.Length);
}
Run Code Online (Sandbox Code Playgroud)

为什么它这样工作我无法理解(因为UploadFromStream(流源和我确定MemoryStream:Stream)

你可以解释吗 ?

bytearray stream azure azure-storage azure-storage-blobs

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

如何删除 Azure BLOB 存储中的所有文件

背景:\n我有一个系统,它与保存文件元数据的数据库和保存文件的 Azure Blob 存储一起使用。数据库和 Azure Blob 存储通过 Web 服务协同工作。

\n\n

为了检查系统的所有部分是否正常工作,我为下载、上传和删除文件的 Web 服务创建了单元测试。经过测试,数据库和Azure Blob存储保留了大量数据,我需要将它们全部删除。我有一个脚本可以从数据库中删除所有数据(删除一个 sql 语句中的所有表、存储过程、触发器、约束和所有依赖项)。

\n\n

现在我需要编写 sctipt(power shell)或代码(C#)来从 Azure Blob 存储中删除所有文件,但我不删除容器,只删除容器中的文件。

\n\n

我的问题:\n这些方法中哪一种(power shell 或 \xd0\xa1#)最好?\n如果我使用 C# 和任务(System.Threading.Tasks) 来删除文件会更快吗?

\n

c# azure azure-powershell azure-blob-storage

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

如何在lambda表达式中为匿名变量编写IEqualityComparer?

我想知道有一种方法可以在lambda表达式中为匿名变量实现IEqualityComparer,或者,无论如何,我需要编写类来将匿名变量转换为sprecific类并创建一个我需要实现IEqualtyComparer的类?

我编写了创建笛卡尔(Decart)生产的代码:我定义了类Decart.

public class Decart
{
    public int X;
    public int Y;
}
Run Code Online (Sandbox Code Playgroud)

我为Decart类定义了IEqualtityComparer

public class Ext : IEqualityComparer<Decart>
{

    public bool Equals(Decart x, Decart y)
    {
        if ((x.X == y.X && x.Y == y.Y) ||
            x.X == y.Y && x.Y == y.X)
            return true;

        return false;
    }

    public int GetHashCode(Decart obj)
    {
        return obj.X + obj.Y;
    }
}
Run Code Online (Sandbox Code Playgroud)

我运行这段代码:

static void Main(string[] args)
{
    Ext ext = new Ext();
    IEnumerable<int> input = Enumerable.Range(1, 3);
        var secondResult = input
        .SelectMany(x …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda

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

什么是更好的和更快的保存和获取文件Azure BLOB存储或SQL SERVER的方法?

[背景]现在,我正在创建WCF,以保存和获取我们大学的文章。

我需要保存文件和这些文件的元数据。我的WCF每天需要1000人使用。该存储空间将包含约60000个aticle。

我有三种不同的方式来做。

  1. 我可以在SQL Server中保存元数据(文件名,文件类型)以创建唯一ID),然后将文件保存到Azure BLOB存储中。
  2. 我可以将元数据和数据保存到sql server中。
  3. 我可以将元数据和数据保存到Azure BLOB存储中。

选择哪种方式,为什么?如果您建议您自己的解决方案,那将是无足轻重的。PS他们俩都使用Azure。

sql-server wcf storage azure

2
推荐指数
1
解决办法
451
查看次数