Windows Forms uygulaması geliştiriyorsunuz, uygulamanın final versiyonunun performansından memnun değilsiniz.
Öngörülerinize göre performans problemi kötü hafıza kullanımı kaynaklı.
Sorunlu kodu tespit etmek ve hafıza kaçaklarını düzeltmek istiyorsunuz.
Aşağıdaki araçlardan hangisini tercih etmelisiniz?
- CLR Profiler
- Event Viewer
- Application Center Test Tool
- Perfmon.exe
Sorunun doğru cevabı için; Devamını oku…
C#, Programlama, VB.NET
application center test tool, clr profiler, event log, event viewer, garbage collector, kisa sinav, managed heap, perfmon, quiz, stress test
Daha önce yazdığım C#’ta anahtar kelimeyi değişken ismi olarak kullanma yazımda, aynı işin VB.NET’te nasıl yapılacağını yazmamıştım.
Değişken isminin, dilin anahtar kelimelerinden biri olmasına verbatim identifier deniyor.
MSDN’de C# dili için verbatim identifier nasıl tanımlanır makalesi mevcut, fakat VB.NET için nasıl yapılacağı dökümante edilmemiş.
Hala verbatim identifier tanımlamanın KÖTÜ bir fikir olduğunu düşünüyorum, fakat VB.NET’te verbatim identifier nasıl tanımlanır, merak edenler için;
Dim [String] As String = ""
Dim [For] As Boolean = True
Dim [While] As Integer = 6
Dim [False] As DateTime = DateTime.Now
Dim [ReadOnly] As File
Database işlemleri gerçekleştiren bir web service yazıyorsunuz. Faturalama ihtiyaçlarından dolayı, her kullanıcının web service’i kullanma miktarını hesaplamanız gerekiyor.
Kullanıcıların web service’e her erişmesiyle değeri 1 artırılacak session değişkeni kullanmayı planlıyorsunuz.
Web Method içerisinde session değişkeni kullanmadan önce ne yapılmalı?
- WebMethod attribute’üne TransactionOption = TransactionOption.Supported eklenmeli
- web.config dosyasına <sessionState mode=”InProc” /> eklenmeli
- WebMethod attribute’üne EnableSession = true eklenmeli
- WebMethod attribute’üne CacheDuration = 20 eklenmeli
Sorunun doğru cevabı için; Devamını oku…
C#, Programlama, VB.NET
cache, config.xml, inproc, kisa sinav, quiz, session, sinav, transaction, web method, web service
Aşağıdaki kod bloğunun çıktısı ne olur?
int sayi = 126;
MessageBox.Show((sayi % 10).ToString());
Seçenekler;
Sorunun doğru cevabı için; Devamını oku…
Windows Forms projenizde, birkaç saniye süren bir işlem yaptırmanız lazım.
Kullanıcı Arayüzü (User Interface – UI), bu işlem süresince sürekli olarak güncellenmeli ve işlemin durumunu bir progressbar nesnesinde göstermeli.
Geliştirme bakımından en az uğraş ile bu görevi nasıl yerine getirirsiniz?
- Asenkron Delegate pattern kullanırım
- BackgroundWorker component’i kullanırım
- Thread class’ını kullanırım
- İşlemi başlatır, Timer nesnesi ile periyodik olarak ProgressBar’ı güncellerim
Sorunun doğru cevabı için; Devamını oku…
C#, Programlama, VB.NET
asenkron, asynchronous, backgroundworker, csharp, delegate, kisa sinav, Programlama, quiz, sinav, test, thread, vbnet
Windows 7 ile gelen yeni özellikleri (JumpList, Tabbed Thumbnails, Thumbnail Toolbars, MultiTouch Desteği, vs..) .Net uygulamalarınızda kullanmak istiyorsanız, şurada yer alan Windows API Code Pack for Microsoft .NET Framework kurulumunu indirin ve bilgisayarınıza kurun.
Kurulum tamamlandıktan sonra, .Net projelerinize ilgili dll’leri referans olarak ekleyerek, çeşitli Windows 7 özelliklerine programatik olarak erişebileceksiniz.
Özellikle, Tabbed Thumbnail özelliğinin, uygulamalara kullanım kolaylığı katacağını düşünüyorum.
MediaPlayer‘ın Windows 7 ile gelen versiyonu, bu özelliği güzel kullanan uygulamalardan biri.

Siz de uygulamalarınıza böyle bir özellik katmak istiyorsanız, örnek kod..
Gereksinimler:
- Minimum .Net Framework 3.5 SP1
- Yazdığınız uygulamayı test edebilmeniz için Windows 7 (eh, haliyle!)
Özellikle uygulama geliştiriciler için, kısa sınav formatında paylaşımlarım olacak.
Pattern, kelime olarak fransızca patron kelimesinden gelmektedir ve tekrarlayan olayları veya nesneleri ifade etmektedir.
Yazılım dünyasında ise, “sürekli karşılaşılan durumlar için geliştirilmiş ve dökümante edilmiş, çözüm yolu standart haline gelmiş, tasarım kalıpları” şeklinde tanımlanabilir.
En bilindik tasarım kalıpları;
- Abstract Factory
- Adapter
- Bridge
- Builder
- Chain of Responsibility
- Command
- Composite
- Decorator
- Facade
- Factory Method
- Flyweight
- Interpreter
- Iterator
- Mediator
- Memento
- Observer
- Prototype
- Proxy
- Singleton
- State
- Strategy
- Template Method
- Visitor
Bundan sonraki birkaç yazımda bu tasarım kalıplarının ne olduklarını ve projelere nasıl uygulandıklarını, örneklerle anlatmaya çalışacağım.
Bilgisayarda paylaşımda olan klasörleri bulmamız gerektiğinde WMI sorgusu çalıştırmamız gerekir.
WMI (Windows Management Instrumentation) hakkında daha detaylı bilgiye MSDN üzerindeki bu kaynaktan ulaşabilirsiniz.
WMI sorgusu çalıştırmak için öncelikle System.Management.dll’i projemize referans göstermeliyiz.

System.Management.dll’i projeye referans gösterdikten sonra form üzerine bir Listbox, bir de Button ekleyip, butonun click event’ine aşağıdaki kodu yazıyoruz;
C# Code :
private void btnDizinleriListele_Click(object sender, EventArgs e)
{
//WMI sorgusu çalıştırıyoruz.
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Share");
//Win32_Share classı :
/*
class Win32_Share : CIM_LogicalElement
{
uint32 AccessMask;
boolean AllowMaximum;
string Caption;
string Description;
datetime InstallDate;
uint32 MaximumAllowed;
string Name;
string Path;
string Status;
uint32 Type;
};
*/
foreach (ManagementObject dizin in mos.Get())
lbDizinler.Items.Add(string.Format("Dizin : {0}\\{1} ({2})", dizin["Path"], dizin["Name"], dizin["Description"]));
}
VB.NET Code :
Private Sub btnDizinleriListele_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDizinleriListele.Click
'WMI sorgusu çalıştırıyoruz.
Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_Share")
'Win32_Share classı :
'class Win32_Share : CIM_LogicalElement
'{
' uint32 AccessMask;
' boolean AllowMaximum;
' string Caption;
' string Description;
' datetime InstallDate;
' uint32 MaximumAllowed;
' string Name;
' string Path;
' string Status;
' uint32 Type;
'};
For Each dizin As ManagementObject In mos.Get()
lbDizinler.Items.Add(String.Format("Dizin : {0}\\{1} ({2})", dizin("Path"), dizin("Name"), dizin("Description")))
Next
End Sub
ManagementObjectSearcher class’ının constructor’ına SELECT * FROM Win32_Share yazdığımıza dikkat edin.
Win32_Share class’ı hakkında daha detaylı bilgiye MSDN üzerinde yeralan bu kaynaktan ulaşabilirsiniz.
C# için kaynak kodlar : PaylasimdaOlanDizinler_C#.zip
VB.NET için kaynak kodlar : PaylasimdaOlanDizinler_VB.zip