Fire and Forget
Fire and Forget, bir işlemi başlatıp sonucunu beklemeden devam etmektir. Bu işi başlatıyorum, bitti mi / hata oldu mu umurumda değil.
Fire and Forget
Fire and Forget, bir işlemi başlatıp sonucunu beklemeden devam etmektir. Bu işi başlatıyorum, bitti mi / hata oldu mu umurumda değil.
- Log atma
- Email gönderme
- Audit / telemetry
- Background notification
- Event publish (RabbitMQ, Kafka vb.)
public void CreateOrder()
{
SendEmail(); // fire and forget gibi davranıyor
}
SendEmail ile pekiştirelim.
❌ Hatalı Kullanım
public async void SendEmail()
{
await smtp.SendAsync(); //HATALI
}
void dönüyor → kimse bu işi takip edemiyor
Bu metod bitti mi? → bilmiyorsun
Hata oldu mu? → bilmiyorsun
Bekleyebilir misin? (await) → hayır
✅Doğru kullanalım;
public async Task SendEmailAsync()
{
await smtp.SendAsync();//Metot mutlaka Task dönmeli
}
_ = Task.Run(async () =>
{
try
{
await SendEmailAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "Email gönderilemedi");
}
});
Task.Run(…) Ne yaptık?
İşi arka planda başlattık
Email gönderme işi ana akışı bloklamasın diye
Thread pool’dan bir thread aldı
**async () => { ... } — Email gönderme asenkron**
SAFE Fire & Forget
public void CreateOrder()
{
_ = Task.Run(async () =>
{
try
{
await SendEmailAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "Email gönderilemedi");
}
});
}
CreateOrder hemen devam eder.Email beklenmez.
Örnek Kullanım
BackgroundService / IHostedService
public class EmailBackgroundService : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// Queue'dan iş al
await Task.Delay(1000);
}
}
}
Controller:
public IActionResult CreateOrder()
{
emailQueue.Enqueue(orderId);
return Ok();
}

메타데이터
- post_id
- 9e4e2a4dbf57
- slug
- fire-and-forget-9e4e2a4dbf57
- url
- https://medium.com/@yaman2222/fire-and-forget-9e4e2a4dbf57
- canonical_url
- https://medium.com/@yaman2222/fire-and-forget-9e4e2a4dbf57
- author_url
- https://medium.com/@yaman2222
- status
- ok
- fetched_at
- 2026-06-22 17:31:34