আসুন আমরা এখানে পোস্ট করা নমুনা কোডটিকে রিডাইরেক্টর এবং অন্যান্য প্রোগ্রামটিকে পুনঃনির্দেশিত কল করতে পারি। যদি এটি আমার হয় তবে আমি সম্ভবত একটি পরীক্ষা পুনর্নির্দেশিত প্রোগ্রাম লিখব যা সমস্যার নকল করতে ব্যবহার করা যেতে পারে।
তাই আমি. পরীক্ষার ডেটার জন্য আমি ECMA-334 C # ভাষা নির্দিষ্টকরণের পিডিএফ ব্যবহার করেছি; এটি প্রায় 5MB নীচে এটির গুরুত্বপূর্ণ অংশটি দেওয়া হল।
StreamReader stream = null;
try { stream = new StreamReader(Path); }
catch (Exception ex)
{
Console.Error.WriteLine("Input open error: " + ex.Message);
return;
}
Console.SetIn(stream);
int datasize = 0;
try
{
string record = Console.ReadLine();
while (record != null)
{
datasize += record.Length + 2;
record = Console.ReadLine();
Console.WriteLine(record);
}
}
catch (Exception ex)
{
Console.Error.WriteLine($"Error: {ex.Message}");
return;
}
ডেটাসাইজ মানটি প্রকৃত ফাইল আকারের সাথে মেলে না তবে এটি কোনও বিষয় নয়। এটি কোনও পিডিএফ ফাইল সর্বদা লাইনগুলির শেষে সিআর এবং এলএফ উভয়ই ব্যবহার করে তবে এটি স্পষ্ট নয় for আপনি পরীক্ষা করতে অন্য যে কোনও বড় টেক্সট ফাইল ব্যবহার করতে পারেন।
এটি ব্যবহার করে যখন আমি প্রচুর পরিমাণে ডেটা লিখি তবে আমি যখন অল্প পরিমাণে লিখি তখন নমুনা পুনর্নির্দেশক কোডটি স্তব্ধ হয়ে যায়।
আমি কোনওভাবে সেই কোডটির প্রয়োগের সন্ধান করার জন্য খুব চেষ্টা করেছি এবং আমি তা করতে পারি নি। আমি পুনঃনির্দেশিত প্রোগ্রামটির লাইনগুলি মন্তব্য করেছি যা পুনঃনির্দেশিত প্রোগ্রামের জন্য একটি পৃথক কনসোল উইন্ডো পাওয়ার চেষ্টা করার জন্য একটি কনসোল তৈরি নিষ্ক্রিয় করেছে তবে আমি তা করতে পারি নি।
তারপরে আমি একটি নতুন উইন্ডো, পিতামাতার উইন্ডো বা কোনও উইন্ডোতে কনসোল অ্যাপ্লিকেশনটি কীভাবে শুরু করব তা খুঁজে পেয়েছি । সুতরাং স্পষ্টতই আমরা (সহজেই) পৃথক কনসোল রাখতে পারি না যখন একটি কনসোল প্রোগ্রাম শেলএক্সেকিউট ছাড়াই অন্য একটি কনসোল প্রোগ্রাম শুরু করে এবং যেহেতু শেলএকসেকিউট পুনর্নির্দেশ সমর্থন করে না আমরা অবশ্যই একটি কনসোল ভাগ করে নেব, এমনকি যদি আমরা অন্য প্রক্রিয়াটির জন্য কোনও উইন্ডো নির্দিষ্ট না করি।
আমি ধরে নিয়েছি যে যদি পুনঃনির্দেশিত প্রোগ্রামটি কোথাও কোনও বাফার পূরণ করে তবে ডেটা পড়ার জন্য এটি অবশ্যই অপেক্ষা করতে হবে এবং যদি সেই সময়ে কোনও তথ্য পুনর্নির্দেশক দ্বারা না পড়ে থাকে তবে এটি একটি অচলাবস্থা।
সমাধানটি হ'ল ReadToEnd ব্যবহার না করা এবং ডেটা লেখার সময় ডেটা পড়ার জন্য তবে অ্যাসিঙ্ক্রোনাস রিড ব্যবহার করা প্রয়োজন হয় না। সমাধানটি বেশ সহজ হতে পারে। নিম্নলিখিতটি আমার জন্য 5 এমবি পিডিএফ নিয়ে কাজ করে।
ProcessStartInfo info = new ProcessStartInfo(TheProgram);
info.CreateNoWindow = true;
info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process p = Process.Start(info);
string record = p.StandardOutput.ReadLine();
while (record != null)
{
Console.WriteLine(record);
record = p.StandardOutput.ReadLine();
}
p.WaitForExit();
আর একটি সম্ভাবনা হ'ল পুনঃনির্দেশটি করার জন্য একটি জিইউআই প্রোগ্রাম ব্যবহার করা। পূর্ববর্তী কোডটি ডাব্লুপিএফ অ্যাপ্লিকেশনটিতে সুস্পষ্ট পরিবর্তন ছাড়া কাজ করে।