ورود

نسخه کامل مشاهده نسخه کامل : Progress در Write/Read آسنکرون



Msba
11-08-2012, 19:11
سلام.
من جایی در برنامه این طوری نوشتم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حتی در جاهایی تا 7 برابر این آرایه می بایست خوانده یا نوشته شود. مشکل زمان بر بودن است. لذا یک Progress برای کاربر الزامی است. اما این متد ها فیدبکی برای Progress نمی دهند.
نت رو گشتم چیزی پیدا نکردم. یکی یه جا گفته بود باید از متد System.Reactive.Linq.Observable.FromAsyncPattern استفاده کنی.
من نتونستم بفهمم چطوری....
فضای نام Reactive رو باید دانلود کنید از اینجا ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
شاید راه حل هم این نباشد.(من اصلا از کلاس هاش سردر نیاوردم.)
شاید هم بگید که این حجم اطلاعات اصلا اشتباه هست که این گونه کار شود. مسلما حرف شما را قبول دارم. اما فرض کنید که راهی نداریم........



ممنون.

_H2_
18-08-2012, 23:38
سلام
عید سعید فطر را به تمام دوستان و اعضای سایت تبریک عرض میکنم.

==============

شما باید تفکر جریان گرا داشته باشید و آن را در کار خودتان لحاظ کنید.
شما نباید کل عملیات تان را در یک بلوک و یک بافر انجام دهید.

این بدان معناست که شما نمیتوانید فایل 80GB که در هارد من است را در یک سری و با یک تخصیص بافر، بخواهید کپی یا فشرده یا رمزنگاری یا دانلود یا ... کنید!
بلکه باید این کار را به اجزای کوچکی بشکنید و در بسته های کوچک انجام دهید.
مثلاً 8KB ... 8KB ... 8KB ...
این یعنی عدم فشار به حافظه، یعنی حلقه، یعنی "نوار پیشرفت" ، یعنی قابلیت "لغو عملیات" و...


(((یک ساختمان را با روی هم گذاشتن آجر به آجر میسازند، هر چند آجرها کوچک باشد)))

این تفکر جریان گرایی است.

با این شیوه مشکل "نوار پیشرفت" تان هم حل میشود، زیرا هم سایز فایل اولیه و هم مقدار پردازش شده آن را دارید.

برای نمونه کد به این پست قدیمی مراجعه کنید که فایلی را با همین تفکر از جایی به جای دیگر کپی میکند و توانایی نمایش درصد پیشرفت را هم دارد.
حجم بافر این کد 128KB است ولی اگر شما عددش را به 8KB هم تغییر دهید، خواهید دید بدون مشکل میتواند فایلهای چند ده گیگی را کپی کند.
بررسی کنید و تلاشی داشته باشید، پس از آن اگر مشکلی بود بفرمائید.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

موفق باشید.