Skip to content
wpdev

.NET / C#

.NET (Page 2)

Storage bug in MediaLibrary.SavePicture

2013-05-26
By: Kevin Gosse
On: May 26, 2013
Tagged: .NET, C#, Windows Phone 7, Windows Phone 8, wpdev

I’ve received many reports lately of users complaining of abnormal storage usage from one of my apps, Imageboard Browser.The application was in some cases storing hundreds of megabytes! I thought at first that it was just the “other storage” issue, but I did some further investigation just in case. After some trial and error and a bit of luck, I’ve discovered that the bug lies in the methods MediaLibrary.SavePicture and MediaLibrary.SavePictureToCameraRoll. As their name indicate, they are used to save a picture to the phone’s picture hub, and they do their job pretty well. Except that ever time you use them, a copy of yourRead More →

Memory leak with BitmapImage

2013-02-17
By: Kevin Gosse
On: February 17, 2013
Tagged: .NET, C#, Memory, profiling, Silverlight, Windows Phone 7, Windows Phone 8, wpdev

There’s a memory leak that has been bothering me for a while in my Imageboard Browser app. The scenario is simple: a slideshow feature, where a new picture is loaded from an url every few seconds. After a while, the app crashes with an OutOfMemory exception. I’ve never been able to find the source of the leak, so I settled for a dirty workaround consisting in loading a fake picture in the BitmapImage instance to force it to release the memory: It fixed the issue, but I didn’t dig much further. However, over the last few weeks I’ve seen many similar leaks reported on StackOverflow,Read More →

Debugging and fixing a bug in Windows Phone sync tool

2012-12-20
By: Kevin Gosse
On: December 20, 2012
Tagged: .NET, C#, Visual Studio, Windows Phone 8

Since a few days, I had this annoying bug in the application used to sync my Windows Phone with my desktop computer: every time I tried to synchronize podcasts, the application just crashed. After a while, I decided it would be a nice debugging exercise to dig into the issue myself. First step: reproducing the issue. It was easy enough, the app automatically crashed when clicking the “Sync button”. And sure enough, this time again, it did crash: I suspected that the application was written in .NET (most Windows Phone related apps are), so I clicked on Debug and selected Visual Studio 2012. VS directlyRead More →

Programmatically terminate a Silverlight app

2012-10-31
By: Kevin Gosse
On: October 31, 2012
Tagged: .NET, C#, Silverlight, Windows Phone 8, wpdev

Exiting programmatically as always been an issue for Silverlight applications on Windows Phone 7. A few workaround existed, from throwing an exception to referencing a XNA assembly and using the ‘Game.Exit()’ method. Windows Phone 8 brings a new API, that can be used from Silverlight applications: ‘Application.Terminate()’ Using it is really straightforward: A word of advice though: calling this method will immediately kill your app. It means that the ‘Application.Closing’ event won’t be triggered, and the contents of the ‘IsolatedStorageSettings.ApplicationSettings’ dictionary won’t be automatically saved to the isolated storage. Therefore, if needed, don’t forget to save that dictionary before calling the ‘Terminate’ method:Read More →

Programmatically change the lock screen picture

2012-10-30
By: Kevin Gosse
On: October 30, 2012
Tagged: .NET, C#, Silverlight, Windows Phone 8, wpdev

Windows Phone 8 introduces a new API to allow apps to change the background picture displayed on the lock screen. The displayed picture can be picked from the application’s resources or from the isolated storage. To use this feature, you need first to declare it in the application’s manifest. Just add the following extension in the “Extensions” node: If you don’t already have an “Extensions” node in the manifest, you’ll have to add it at the same level as the “Capabilities” and “Tasks” nodes: Once the manifest is updated, there’s one remaining step before being able to change the wallpaper: the application must first askRead More →

Dynamically toggle PanoramaItem visibility

2012-07-01
By: Kevin Gosse
On: July 1, 2012
Tagged: .NET, C#, Silverlight, Windows Phone 7, wpdev

A strange issue with the Panorama control, that has been brought to my attention by @lancewmccarthy, and which has also been encountered by some people on StackOverflow. The original scenario was a bit too complex for a blog post, but we can reproduce it in a much simpler way. Create a new page, and add a panorama control called ‘Panorama’. Then add two PanoramaItem, and put a button in the first one: In the click event handler of the button, we toggle the visibility of the second item of the panorama: Start the application, try tapping on the button, and the visibility of the PanoramaItemRead More →

IsolatedStorageException when opening a file played by a MediaElement

2012-05-06
By: Kevin Gosse
On: May 6, 2012
Tagged: .NET, C#, Silverlight, Windows Phone 7, wpdev

Today we’ll dig a little into Windows Phone’s base class library, thanks to a question I found on stack overflow. The problem occurs with this simple code, used to load a music file from the isolated storage, and play it with a MediaElement: When executed for the first time, this code works fine. When executed a second time with the same file, it throws an IsolatedStorageException: “Operation not permitted on IsolatedStorageFileStream”. There isn’t many situations where opening a file from the isolated storage will throw an exception. The main two reasons are: an invalid filename, or a file sharing issue. Since the error only occursRead More →

Dynamically change startup page

2012-02-12
By: Kevin Gosse
On: February 12, 2012
Tagged: .NET, C#, Silverlight, wpdev

Let’s say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the ‘NavigationPage’ attribute in the manifest file. But the manifest cannot be modified once the application has been published. How to define it at runtime? For this, we’ll use a class very useful in ‘classical’ Silverlight, but widely forgotten on Windows Phone: UriMapper. In this example, we create an application with three pages (Page1, Page2, and Page3), and we want the startup page to be picked randomly among those three pages. First, change the manifest to use an inexistentRead More →

Inject a file in a xap using post-build event

2012-01-12
By: Kevin Gosse
On: January 12, 2012
Tagged: .NET, C#, Silverlight, wpdev, XNA

Let’s say that your application is dynamically loading resources, and you have to constantly add/remove new resources during the development. In this scenario, it could be a huge-time saver to just tell Visual Studio to take the contents of a folder and inject it into your application. I don’t think there’s an out-of-the-box way to do that, but you can inject the files yourself using a post-build event. How? The output of every WP7 project is a .xap file, which is just a zip file with a different extension. So you can edit it using whichever zip extractor you like. In our case, let’s useRead More →

Cryptic error message in XAML

2012-01-09
By: Kevin Gosse
On: January 9, 2012
Tagged: .NET, C#, Silverlight, wpdev

Unexpected NONE in parse rule ElementBody ::= ATTRIBUTE* ( PropertyElement | Content )* . ENDTAG.. Best. Error message. Ever. Thanks Silverlight. So, what’s going on? For the sake of all the devs who’ll come to this page using Google, let’s describe one of the causes of the error message. Is that it? Yes, pretty much. I don’t know if it’s the only possible cause, but it seems that this error message is triggered when an empty element is used in the XAML for a collection. In this case it’s the MenuItems of an ApplicationBar, but you can also have the problem with an empty rowRead More →

Posts navigation

Previous 1 2 3 Next

Recent Posts

  • Uncovering a bug in Attribute.GetHashCode
  • [UWP] NavigationService with back button handler priority
  • [UWP] Bandwidth adaptive image control
  • [uwp] Animation orchestration using Caliburn.Micro coroutines
  • Should I await the last call in a method

Archives

  • March 2017 (1)
  • February 2016 (1)
  • January 2016 (1)
  • October 2015 (1)
  • September 2015 (2)
  • August 2015 (1)
  • May 2015 (1)
  • April 2015 (1)
  • March 2015 (3)
  • October 2014 (1)
  • September 2014 (1)
  • November 2013 (1)
  • August 2013 (1)
  • May 2013 (1)
  • February 2013 (1)
  • December 2012 (1)
  • October 2012 (2)
  • July 2012 (1)
  • May 2012 (1)
  • February 2012 (1)
  • January 2012 (4)

Follow me on Twitter

My Tweets

Designed using Dispatch. Powered by WordPress.