MarkItUp.SingleUserBlog/UI/AsyncTrackBackWorker.cs

(完整代码) 1KB

using System;
using System.Text ;
using System.Threading ;
using System.Text.RegularExpressions ;

namespace MarkItUp.SingleUserBlog.UI
{
	public class AsyncTrackBackWorker {
		
		public AsyncTrackBackWorker() {}

		public static IAsyncResult BeginTrackBack(string postUrl, string title, string excerpt, string url, string blogName, AsyncCallback callback) {
			
			TrackBackPingResult result = new TrackBackPingResult(postUrl, title, excerpt, url, blogName, callback) ;

			if ( !result.IsCompleted ) {
				ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadPool_WaitCallback), result);
			}

			return result ;
		}


		public static string EndTrackBack(IAsyncResult ar) {
			TrackBackPingResult result = ar as TrackBackPingResult;
        
			if ( result != null ) {
				return result.Result;
			} else {
				throw new Exception("EndInvoke was called with the wrong async result");
			}
		}



		private static void ThreadPool_WaitCallback(object state) {

			TrackBackPingResult result = state as TrackBackPingResult;
        
			if ( result != null )
				result.currentThread = Thread.CurrentThread;

			try {
				result.DoWork() ;
			} catch (ThreadAbortException) {
				Thread.ResetAbort();
			} finally {
				result.currentThread = null;
			}
			result.Complete();
		}
	}
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。