Tuesday, April 23, 2013
In C# we have many ways for writing asynchronous code, we can create our own thread (a bad practice most of the times), we can use the thread-pool, we can use BackgroundWorker or we can use Tasks (and Async\Await which is based on tasks) In order to notify the completion of an asynchronous operation we also have a few options (which depends on the type of dispatch mechanism we used). We can raise event when the work is done, we can call a callback function, or we can use a continuation style like Task.ContinueWith() or the Async\Await pattern...
Monday, January 14, 2013
You can download the source-code from https://github.com/tamirdresher/WinRTThreadSafeObservableCollection
Today I want to discuss a problem I faced in a WinRT project I'm working on
The short story:
We receive events from the network on a background thread(s)
The events bubble up to the UI layer and caught in the ViewModel
The ViewModel changes an inner ObservableCollection in response to the event
One thread is adding\removing from the collection while another searches for an element in it.
The search is iterating a collection that is being modified è Exception is thrown
The solution to the problem is one of two:
Making a lock mechanisem on the collection...
Wednesday, January 2, 2013
When we create applications we usually want to make them easy to use by our users. One way to make application more accessible internationally is to make it localized to the users' language and regional settings.
In this post I wish to show how to add localization support to your WinRT C# application.
All the source code can be downloaded from my GitHub: https://github.com/tamirdresher/LocalizedWinRTAppExample
I created a simple application that includes a simple login page (the app includes only UI) and currently supports "en-US" and "he-IL" locales
How does it work?
Create a new Windows Store project –...
Tuesday, December 11, 2012
In a project I'm working on I needed to get an ID that uniquely identifies the device that is running the app.
WinRT provides an API for HardwareIdentification
but you should be aware that the call to GetPackageSpecificToken method will produce different value for each app that calls it.And if you have several applications that needs to interact with a websevice and pass the device id you can't rely on it for identification.Another approach you can use is taking the NetworkAdapterId , which is like using the MAC address (WinRT doesn't give an API to take the MAC itself).Here is a...