যদিও এটি একটি পুরানো থ্রেড, আমি কোনও সম্ভাব্য সমস্যার বিকাশকারীদের দিকে মনোযোগ আকর্ষণ করতে চেয়েছিলাম যা আমাকে প্রভাবিত করেছিল এবং বড় ইউডাব্লুপি অ্যাপগুলিতে ডিবাগ করা অত্যন্ত কঠিন করে তুলেছে। আমার ক্ষেত্রে, আমি ২০১৪ সালে উপরের পরামর্শগুলি থেকে নীচের কোডটি রিফ্যাক্ট করেছিলাম তবে মাঝে মধ্যে মাঝে মাঝে অ্যাপ্লিকেশন হিমশীতল হয়ে যায় যা এলোমেলো প্রকৃতির ছিল।
public static class DispatcherHelper
{
public static Task RunOnUIThreadAsync(Action action)
{
return RunOnUIThreadAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, action);
}
public static async Task RunOnUIThreadAsync(Windows.UI.Core.CoreDispatcherPriority priority, Action action)
{
try
{
await returnDispatcher().RunAsync(priority, () =>
{
action();
});
}
catch (Exception ex)
{
var noawait = ExceptionHandler.HandleException(ex, false);
}
}
private static Windows.UI.Core.CoreDispatcher returnDispatcher()
{
return (Windows.UI.Xaml.Window.Current == null) ?
CoreApplication.MainView.CoreWindow.Dispatcher :
CoreApplication.GetCurrentView().CoreWindow.Dispatcher;
}
}
উপরের দিক থেকে, আমি ডিসপ্যাচারের কলিংয়ের মাধ্যমে অ্যাপ্লিকেশনটি আউট করার অনুমতি দেওয়ার জন্য একটি স্ট্যাটিক ক্লাস ব্যবহার করেছিলাম - একটি একক কলের অনুমতি দিয়ে। 95% সময়ের জন্য, কিউএ রিগ্রেশনের মাধ্যমেও সবকিছু ঠিকঠাক ছিল তবে ক্লায়েন্টরা এখন এবং তারপরে একটি সমস্যা রিপোর্ট করবে। সমাধানটি ছিল নীচের কলটি অন্তর্ভুক্ত করা, আসল পৃষ্ঠাগুলিতে স্থির কল ব্যবহার না করা।
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
});
এই ক্ষেত্রে যখন আমার ইউআই থ্রেডটি App.xaml.cs বা আমার সিঙ্গলটন নেভিগেশন সার্ভিস থেকে কল করা বা স্ট্যাকের দিকে ঠেলাঠেলি / পপিং পরিচালনা করানো হয়েছিল তা নিশ্চিত করা দরকার। প্রেরণকারীটি স্পষ্টতই ট্র্যাকটি হারাচ্ছিল যার কোন ইউআই থ্রেড বলা হয়েছিল, যেহেতু প্রতিটি পৃষ্ঠার নিজস্ব ইউআই থ্রেড রয়েছে, যখন স্ট্যাকটিতে মেসেজবাস থেকে বিভিন্ন বার্তা প্রেরণ করা হয়েছিল।
আশা করি এটি অন্যকে প্রভাবিত করতে সহায়তা করে এবং আমি মনে করি যে প্রতিটি প্ল্যাটফর্ম তাদের বিকাশকারীদের জন্য সর্বোত্তম অনুশীলনগুলির একটি সম্পূর্ণ প্রকল্প প্রকাশের মাধ্যমে একটি পরিষেবা করবে would