Minio에서 작동하는 C# .net 코어 ListObjectsAsync example이 있는데, 콘솔에 게시하는 대신 목록에 결과를 캡처하는 방법은 무엇입니까?observable.Subscribe 함수에서 문자열 목록을 얻으려면 어떻게합니까
using System;
using Minio.DataModel;
namespace Minio.Examples.Cases
{
class ListObjects
{
// List objects matching optional prefix in a specified bucket.
public static void Run(Minio.MinioClient minio,
string bucketName = "my-bucket-name",
string prefix = null,
bool recursive = false)
{
try
{
Console.Out.WriteLine("Running example for API: ListObjectsAsync");
IObservable<Item> observable = minio.ListObjectsAsync(bucketName, prefix, recursive);
IDisposable subscription = observable.Subscribe(
item => Console.WriteLine("Object: {0}", item.Key),
ex => Console.WriteLine("OnError: {0}", ex),
() => Console.WriteLine("Listed all objects in bucket " + bucketName + "\n"));
// subscription.Dispose();
}
catch (Exception e)
{
Console.WriteLine("[Bucket] Exception: {0}", e);
}
}
}
}
나는이 목록에 이름을 추가하는 대신 콘솔로 인쇄 할 수 있도록 기능을 구독 수정 시도 :
IDisposable subscription = observable.Subscribe(
item => names.Add(item.Key),
ex => Console.WriteLine("OnError: {0}", ex),
() => Console.WriteLine("Listed all objects in bucket "
+ bucketName + "\n" + "count:" + names.Count +"\n"));
는 7 인쇄,하지만 외부 names.Count를 인쇄하는 경우 of 그것을 구독하십시오 0; 그 불가능 있도록으로 IDisposable을
List<Item> myList = new List<Item>(observable.ToList().Subscribe(x => Console.WriteLine("do something"),
ex => Console.WriteLine("OnError: {0}", ex),
() => Console.WriteLine("Done" + "\n"));
그러나 관찰 결과 :
이것은 내가 원하는 무엇입니까. 관측 가능 목록에서 목록으로 이동하려면 어떻게해야합니까? 또는 asp.net 핵심보기로 전달할 수 있도록 데이터를 수집하는 방법은 무엇입니까?
이 기능은 - svek 제안처럼 대기를 사용합니다. 내가 익숙해 나는 것보다 읽는 조금 더 열심히 코드를 찾을 수 있지만 waiting IObservable to get all elements error
List<Item> names = new List<Item>();
IDisposable subscription = observable.ToList().Subscribe(
x => names.AddRange(x),
ex => Console.WriteLine("OnError: {0}", ex),
() => Console.WriteLine("Done" + "\n"));
observable.Wait();
Console.WriteLine("out of subscribe count:" + names.Count + "\n");
subscription.Dispose();
return names;
또한'observable.ToList()를 할 수 있습니다.'T') 0 개 이상의 요소를 하나의'IList의를'(생산에 0 개 이상의 생산에서 관찰 변경하는'(구독합니다. –
Enigmativity
을 내가 사용하는 경우 ToList() 데이터는 여전히 내부 관찰 기능의 "덫"입니다. 내가 둘다있어 데이터? 또는 단어 그에게 어쩌면 올바른 방법을 포함하는 목록 얻는 방법을 어떻게 감시 오브젝트로 변환 할 목록 에?'.ToList을 시도 –
(). 대기()'. 그것은 (당신이 물어 않았다) 차단 호출,하지만 당신이 정말로'.Subscribe을 (사용해야으로 즉, 그러나, 적합하지 않습니다. ..)'. – Enigmativity