【问题标题】:Error Saving file Windows Iot Core jpg format保存文件 Windows IoT Core jpg 格式时出错
【发布时间】:2018-01-12 18:34:47
【问题描述】:

接下来我编写了一个代码: 私有异步无效 WriteData() { var removeDevices = KnownFolders.RemovableDevices; var externalDrives = 等待可移动设备.GetFoldersAsync(); var drive0 = externalDrives[0];

            var testFolder = await drive0.CreateFolderAsync("test");
            var testFile = await testFolder.CreateFileAsync("test.jpg");

            var byteArray = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
            using (var sourceStream = new MemoryStream(byteArray).AsRandomAccessStream())
            {
                using (var destinationStream = (await testFile.OpenAsync(FileAccessMode.ReadWrite)).GetOutputStreamAt(0))
                {
                    await RandomAccessStream.CopyAndCloseAsync(sourceStream, destinationStream);
                }

            }

        }

        private async void _timer_Tick(object sender, object e)
        {
            DhtReading reading = new DhtReading();
            int val = this.TotalAttempts;
            this.TotalAttempts++;

            reading = await _dht.GetReadingAsync().AsTask();

            _retryCount.Add(reading.RetryCount);
            this.OnPropertyChanged(nameof(AverageRetriesDisplay));
            this.OnPropertyChanged(nameof(TotalAttempts));
            this.OnPropertyChanged(nameof(PercentSuccess));
        if (reading.IsValid)
        {
            this.TotalSuccess++;
            this.Temperature = Convert.ToSingle(reading.Temperature);
            this.Humidity = Convert.ToSingle(reading.Humidity);
            this.LastUpdated = DateTimeOffset.Now;
            this.OnPropertyChanged(nameof(SuccessRate));

            this.WriteData();


        }

        this.OnPropertyChanged(nameof(LastUpdatedDisplay));

    }

我的代码冻结,我想知道如何在该存档中保存湿度和温度值, 这是保存此应用的最佳方式吗?

有人可以帮助我吗?

【问题讨论】:

  • 我在 Raspberry Pi 2 上检查了WriteData()。我成功写入 test.jpg。问题可能出在 _timer_Tick() 中。哪一行导致您的代码冻结?你用什么设备?
  • 我使用的是 Raspberry Pi 3,Windows IoT Core OS 版本:10.0.14393.0,你发现我的代码有什么错误吗?
  • 错误在#endif #if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION UnhandledException += (sender, e) => { if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics .Debugger.Break(); //这条线 }; #endif } } }

标签: c# uwp iot windows-10-iot-core


【解决方案1】:

因为在你第一次运行代码后,“test”文件夹和“test.jpg”已经创建好了,所以当你再次运行代码时,你可能会收到这个异常。你可以试试这个:

var testFolder = await drive0.GetFolderAsync("test");
var testFile = await testFolder.GetFileAsync("test.jpg");

代替

var testFolder = await drive0.CreateFolderAsync("test");
var testFile = await testFolder.CreateFileAsync("test.jpg");

注意:这里我将 test.jpg 保存在外部 SD 卡上。如果您的设备中没有 SD 卡,代码也会遇到此异常。

【讨论】:

  • @FelipeFerreiraMendes 您是否成功创建或获取了test.jpg?在哪儿?您可以逐行调试您的代码,并找出您的代码在哪一行遇到了异常。
【解决方案2】:

在你的类的顶部试试这个,MyClass 是容器类的名称

StorageFolder testFolder;
public MyClass()
{
    var removableDevices = KnownFolders.RemovableDevices; 
    var externalDrives = await removableDevices.GetFoldersAsync(); 
    var drive0 = externalDrives[0];
    testFolder = await drive0.CreateFolderAsync("test");
    await testFolder.CreateFileAsync("test.jpg");
}

而且,在您的 WriteData 方法中,您只说

var testFile = await testFolder.GetFolderAsync("test.jpg");

观察

  • WriteData 变慢 removableDevices.GetFoldersAsync()
  • 当您使用计时器时,您需要尽可能快地保持Tick 事件并释放资源

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多