Xamarin.forms 如何用一个流设置两个图像源

Xamarin.forms 如何用一个流设置两个图像源,xamarin.forms,Xamarin.forms,我有这个代码片段 Task.Run(async () => { stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync(); if (stream != null) { Device.BeginInvokeOnMainThread((

我有这个代码片段

 Task.Run(async () =>
 {    
              stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync();

                 if (stream != null)
                 {

                     Device.BeginInvokeOnMainThread(() =>
                     {
                         ImageOne.Source = ImageSource.FromStream(() => stream);
                         ImageTwo.Source = ImageSource.FromStream(() => stream);

                     });

                 }
} 
Task.Run(异步()=>
{    
stream=wait DependencyService.Get().GetImageStreamAsync();
if(流!=null)
{
Device.beginInvokeMainThread(()=>
{
ImageOne.Source=ImageSource.FromStream(()=>stream);
ImageTwo.Source=ImageSource.FromStream(()=>stream);
});
}
} 

代码的问题是只设置了ImageOne.Source(因为它是最后一个)。我如何使用相同的流设置ImageOne和ImageTwo?有没有比我现在做的更好的方法呢?

也许你可以这样做:

Task.Run(async () =>
{    
    stream = await DependencyService.Get<IPicturePicker().GetImageStreamAsync();

    if (stream != null)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            var source = ImageSource.FromStream(() => stream);
            ImageOne.Source = source;
            ImageTwo.Source = source;
        });
    }
} 
Task.Run(异步()=>
{    
stream=wait DependencyService.Get
{
var source=ImageSource.FromStream(()=>stream);
ImageOne.Source=源;
图像二。源=源;
});
}
} 

你应该测试一下,我没有试过。

也许你可以这样做:

Task.Run(async () =>
{    
    stream = await DependencyService.Get<IPicturePicker().GetImageStreamAsync();

    if (stream != null)
    {
        Device.BeginInvokeOnMainThread(() =>
        {
            var source = ImageSource.FromStream(() => stream);
            ImageOne.Source = source;
            ImageTwo.Source = source;
        });
    }
} 
Task.Run(异步()=>
{    
stream=wait DependencyService.Get
{
var source=ImageSource.FromStream(()=>stream);
ImageOne.Source=源;
图像二。源=源;
});
}
} 

你应该测试一下,我没有试过。

以下是你可以做的:

Device.BeginInvokeOnMainThread(async () =>
            {
                Stream stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync();
                var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);

                image1.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); });
                image2.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); });
            });
Device.beginInvokeMainThread(异步()=>
{
Stream=等待DependencyService.Get().GetImageStreamAsync();
var memoryStream=新的memoryStream();
等待流.CopyToAsync(memoryStream);
image1.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
image2.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
});

以下是您可以做的:

Device.BeginInvokeOnMainThread(async () =>
            {
                Stream stream = await DependencyService.Get<IPicturePicker>().GetImageStreamAsync();
                var memoryStream = new MemoryStream();
                await stream.CopyToAsync(memoryStream);

                image1.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); });
                image2.Source = ImageSource.FromStream(() => { return new MemoryStream(memoryStream.ToArray()); });
            });
Device.beginInvokeMainThread(异步()=>
{
Stream=等待DependencyService.Get().GetImageStreamAsync();
var memoryStream=新的memoryStream();
等待流.CopyToAsync(memoryStream);
image1.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
image2.Source=ImageSource.FromStream(()=>{returnnewmemoryStream(MemoryStream.ToArray());});
});

我只希望设置imageOne。你确定它设置imageOne吗?我只希望设置imageOne。你确定它设置imageTwo吗?具有讽刺意味的是,我通过返回一个流数组而不是流来解决问题…谢谢你的帮助具有讽刺意味的是,我通过返回一个流数组而不是流来解决问题…谢谢你的帮助