Mekanisme Tamat Masa Pelaksanaan Kod Universal C#: Panduan Lengkap
Dalam pembangunan perisian, mengawal masa pelaksanaan blok kod adalah penting, terutamanya apabila menangani kebergantungan luaran yang tidak boleh dipercayai atau memakan masa seperti panggilan API atau pertanyaan pangkalan data. Untuk melakukan ini, cara biasa untuk menetapkan tamat masa untuk satu baris kod diperlukan.
Melaksanakan mekanisme tamat masa universal
Inti membina mekanisme tamat masa universal adalah untuk menamatkan kod jangka panjang dan memintas kemungkinan ralat. Untuk ini kita boleh menggunakan penyelesaian berlapis:
CallWithTimeout
) yang menerima operasi dan tempoh tamat masa sebagai input. Kaedah ini memulakan pelaksanaan kod pada urutan yang berasingan dan melampirkan perwakilan pembalut untuk menjejaki kemajuan. TimeoutException
. Kendalian praktikal
Berikut ialah butiran pelaksanaan khusus:
<code class="language-csharp">class Program { static void Main(string[] args) { // 设置 6000 毫秒(6 秒)的超时 CallWithTimeout(FiveSecondMethod, 6000); // 设置 4000 毫秒(4 秒)的超时 CallWithTimeout(FiveSecondMethod, 4000); } static void FiveSecondMethod() { Thread.Sleep(5000); } } static void CallWithTimeout(Action action, int timeoutMilliseconds) { Thread threadToKill = null; Action wrappedAction = () => { threadToKill = Thread.CurrentThread; try { action(); } catch (ThreadAbortException ex) { Thread.ResetAbort(); // 避免强制终止 } }; IAsyncResult result = wrappedAction.BeginInvoke(null, null); if (result.AsyncWaitHandle.WaitOne(timeoutMilliseconds)) { wrappedAction.EndInvoke(result); } else { threadToKill.Abort(); throw new TimeoutException(); } }</code>
Pelaksanaan ini membolehkan anda melaksanakan kod dengan tamat masa yang ditakrifkan dengan baik sambil memberikan fleksibiliti dan kawalan yang elegan ke atas pelaksanaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Mekanisme Tamat Masa Generik untuk Pelaksanaan Kod dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!