异步操作挂在Unity中

时间:2018-05-05 11:50:32

标签: c# unity3d async-await ipfs

为了解决代码所做的任何混淆,需要一个'对象' class(一类float和数字),写入文件(使用二进制格式化),并使用IPFS.Net实现将文件写入网络。创建文件没问题,但在保存文件时,代码会在Unity中无限期挂起。代码如下:

public static class IPFS_IO
{
    public static void AddObject(Object obs)
    {
        string path = Application.persistentDataPath + "/data.bytes";
        if (File.Exists(path))
        {
            File.Delete(path);
        }

        FileStream stream = File.Create(path);
        BinaryFormatter formatter = new BinaryFormatter();
        formatter.Serialize(stream, obs);
        stream.Close();

        Task<Ipfs.IFileSystemNode> taskA = AddObjectSaveHash(path);
        taskA.Wait();

        //string hashpath = Application.persistentDataPath + "/hash.txt";

        //StreamWriter writer = new StreamWriter(hashpath);
        //writer.Write(hash);
        //writer.Close();
    }

    async static Task<Ipfs.IFileSystemNode> AddObjectSaveHash(string path)
    {
        Batteries.Init();

        using (var ie = new IpfsEngine("".ToCharArray()))
        {
            return await ie.FileSystem.AddFileAsync(path)
                           .ConfigureAwait(false);
        }
    }

这是一个常见的死锁,还是只有太多数据输入网络?牢记:

a)这是一个在Unity游戏引擎中使用的C#实现

b)我正在使用Richard Schneiders实现(github:https://github.com/richardschneider/net-ipfs-engine

感谢您提出的任何帮助或问题。

0 个答案:

没有答案