בעולם של ה-CLR לא קשה לבצע פעולות אסינכרוניות. למשל, כל delegate תומך אוטומטית בהפעלה אסינכרונית ע"י BeginInvoke ו-EndInvoke. מי שצריך לעבוד ללא delegate יכול להשתמש ב-ThreadPool שלו מספר מתודות סטטיות להפעלת method בצורה אסינכרונית. הבעיה ב-ThreadPool היא שהינו יחיד. כלומר, אם יש מצב שבו יש באפליקציה שתי סוגי בקשות, אחת בעדיפות רגילה ואחת בעדיפות גבוהה, הן ייזרקו לאותו תור שמנהל את הבקשות האסינכרוניות, ואם לדוגמא, יש 100 בקשות רגילות בתור ואז צריך להעביר בקשה בעדיפות גבוהה, הבקשה תאלץ לחכות...