Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
502 yazı bulundu
C#'ta Event: EventHandler, Güvenli Tetikleme ve Subscription Leak
Backend SERİ 03

C#'ta Event: EventHandler, Güvenli Tetikleme ve Subscription Leak

event keyword'ünün delegate'i nasıl koruduğu ve CS0070, compiler'ın ürettiği private field ile add/remove method'ları, EventHandler konvansiyonu ve record ile event verisi, ?.Invoke ile güvenli tetikleme, kendi add/remove accessor'ların ve CS0079, WeakReference ile ölçülen 50 MB'lık subscription leak'i ve IDisposable dönen Subscribe.

7 Kas 2026 10 dk 14
C#'ta Lambda ve Closure: Yakalanan Değişken Tuzağı
Backend SERİ 02

C#'ta Lambda ve Closure: Yakalanan Değişken Tuzağı

Lambda'nın biçimleri ve C# 10 açık dönüş tipi, closure'ın değişkenin değerini değil kendisini yakalaması, compiler'ın ürettiği display class'ı reflection ile görmek, for döngüsünde yakalanan değişken ve C# 5'in foreach değişikliği, closure başına 88 byte allocation ölçümü, static lambda ve CS8820, deferred LINQ ile birleşen yakalama hatası.

7 Kas 2026 9 dk 9
C#'ta Delegate, Func ve Action: Method'u Değer Gibi Taşımak
Backend SERİ 01

C#'ta Delegate, Func ve Action: Method'u Değer Gibi Taşımak

Delegate bir method'u tutan tiptir: MulticastDelegate'ten derive eden class, Method ve Target, Func/Action/Predicate, C# 10 ile lambda'nın doğal tipi ve CS8917, method'u parametre olarak geçirmek, multicast delegate'in son sonucu ve kesilen zincir, delegate tipleri arası dönüşüm ve variance, null delegate ve -= ile çıkmayan lambda tuzakları.

7 Kas 2026 9 dk 13
C# Async ve .NET 9–10: Task.WhenEach, Lock Tipi ve Framework'teki Async LINQ
Backend SERİ 17

C# Async ve .NET 9–10: Task.WhenEach, Lock Tipi ve Framework'teki Async LINQ

WhenAny döngüsünün yerini alan .NET 9 Task.WhenEach ve hatalı task'larla davranışı, C# 13 lock statement'ının tanıdığı System.Threading.Lock ile CS9216, CS1996, CS4007 ve CS9202 sınırları, .NET 10'da framework'e giren async LINQ, async Select ve System.Linq.Async paketiyle çakışmanın çözümü.

7 Kas 2026 11 dk 8
C# Async ve .NET 8: TimeProvider, ConfigureAwaitOptions, Parallel.ForAsync ve CancelAsync
Backend SERİ 16

C# Async ve .NET 8: TimeProvider, ConfigureAwaitOptions, Parallel.ForAsync ve CancelAsync

.NET 6'da kendi IClock'umuzu yazıyorduk; .NET 8'de TimeProvider ve FakeTimeProvider ile 15 dakikalık bekleme testte 0 ms sürüyor. Exception fırlatmadan bekleyen SuppressThrowing ve Task<T> tuzağı, ForceYielding, index aralığını doğrudan alan Parallel.ForAsync ve callback'leri iptal edeni bekletmeden çalıştıran CancelAsync.

7 Kas 2026 10 dk 10
C# Timer'lar ve Bekleme: PeriodicTimer, WaitAsync ve Task.Delay
Backend SERİ 15

C# Timer'lar ve Bekleme: PeriodicTimer, WaitAsync ve Task.Delay

System.Threading.Timer'da üst üste binen callback'ler, .NET 6 PeriodicTimer ile çakışmasız periyodik iş, Thread.Sleep ile Task.Delay'in thread pool'a etkisi ve Task.Delay'in hassasiyeti, exception'ları yutan System.Timers.Timer, işlemi iptal etmeyen WaitAsync, backoff ve jitter ile retry, GC'nin topladığı timer.

7 Kas 2026 10 dk 10
C# Channels ile Producer/Consumer: Backpressure, Bounded Channel ve Pipeline
Backend SERİ 14

C# Channels ile Producer/Consumer: Backpressure, Bounded Channel ve Pipeline

System.Threading.Channels ile async queue: kapasitesi iki olan channel'a neden üç sipariş sığıyor, Writer/Reader ve Complete, WaitToReadAsync/TryRead döngüsü, bounded channel'da FullMode seçenekleri ve itemDropped, birden çok consumer, hatayı Complete(ex) ile ileten bir sipariş pipeline'ı ve Complete'i unutmanın bedeli.

7 Kas 2026 9 dk 9
C# Senkronizasyon: lock, Interlocked, SemaphoreSlim ve Concurrent Collection'lar
Backend SERİ 13

C# Senkronizasyon: lock, Interlocked, SemaphoreSlim ve Concurrent Collection'lar

sold++ neden bir milyonu bulmuyor: race condition ve check-then-act. lock'un kuralları ve içinde await yazılamaması, Interlocked ile atomik sayaç ve CompareExchange, async cache için SemaphoreSlim pattern'i, ConcurrentDictionary'de factory'nin birden çok kez çalışması ve Lazy<T> çözümü.

7 Kas 2026 11 dk 9
C# Paralellik: Parallel.For, Parallel.ForEachAsync, PLINQ ve Task.Run Ne Zaman
Backend SERİ 12

C# Paralellik: Parallel.For, Parallel.ForEachAsync, PLINQ ve Task.Run Ne Zaman

Parallel.ForEach'e async lambda verince neden hiçbir iş bitmiyor, concurrency ile paralellik farkı, Parallel.For ve thread-local toplama, .NET 6 Parallel.ForEachAsync ile sınırlı concurrency, PLINQ'te sıra, BenchmarkDotNet ile paralelliğin ne zaman kazandırıp ne zaman kaybettirdiği ve Task.Run'ın doğru yeri.

7 Kas 2026 15 dk 8
C# IAsyncEnumerable, await foreach ve Async Dispose
Backend SERİ 11

C# IAsyncEnumerable, await foreach ve Async Dispose

Sayfalı bir API'den gelen kitapları Task<List<T>> ile toplamak ilk elementi en sona bırakır; async iterator ile yield return ve await bir aradayken ilk sayfa hemen akar. await foreach'in açılımı ve MoveNextAsync'in ValueTask'ı, EnumeratorCancellation ve CS8425, break'te çalışan finally, IAsyncDisposable ve await using, DeserializeAsyncEnumerable ve ASP.NET Core'da stream.

7 Kas 2026 9 dk 6
C# ValueTask: Ne Zaman Task Yerine, Hangi Kurallarla
Backend SERİ 10

C# ValueTask: Ne Zaman Task Yerine, Hangi Kurallarla

Cache'ten senkron dönen bir async method Task<int> ile her çağrıda 72 byte ayırırken ValueTask<int> hiç ayırmaz. Debug ve Release ölçüm farkı, runtime'ın küçük sonuç cache'i, BenchmarkDotNet ile cache ve gerçekten asenkron yollar, ValueTask'ı iki kez await etmenin Channel üzerinde gerçek InvalidOperationException'ı, AsTask ve ne zaman ValueTask seçmeli.

7 Kas 2026 9 dk 8
C# async void ve Fire-and-Forget: Kaybolan Exception'lar
Backend SERİ 09

C# async void ve Fire-and-Forget: Kaybolan Exception'lar

async void method'dan çıkan exception neden try/catch'e gelmeden process'i çökertir ve async Task bunu nasıl çözer. Event handler'larda async void'in doğru kullanımı, List.ForEach ile gizli async void, beklenmeyen task'ın sessizce kaybolan hatası ve UnobservedTaskException, CS4014 uyarısı, hatayı log'a düşüren güvenli Forget extension'ı ve ASP.NET Core'da scope tuzağı.

7 Kas 2026 8 dk 6
Blog Haritası