Another Android Income Report #01

I started to experiment with the android market aka Google Play Store. I wanted to see if I could generate some income. Just for fun. I have a job so no need to earn money with android apps :D.

The first day I integrated AdMob advertisements was the 13. March. So how much did I made until 13. of April?

Impressions: ~ 32'000
Fill Rate: ~ 98.27 %
Revenue ~ 15.50 $


C# saving a bitmap results in generic GDI+ error

If you save a bitmap the following exception can pop up:

System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+.
   at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)

Possible causes:

C# Scale bitmap

The following code scales a bitmap from the filesystem to a defined width:

C# Multithreading

Execute code in the UI Thread

Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, () => {
                Mouse.OverrideCursor = Cursors.Wait;

Log4Net take the name of the actual class for the logger


Oracle SQL-Script output

First you need to activate it and call the script:

set serveroutput on format wrapped;
call SOME_SCRIPT(150);

In the script you can output something with that line:


After the script has been executed you can see the output for example in the Script Output tab of SQLDeveloper.


PInvokeStackImbalance Excpetion

If you get a PInvokeStackImbalance exception it could be:

  • One parameter has a wrong type (p. x. int changed to long)
  • The CallingConvention of the DllImport. Change it in the declaration:
    [DllImport("user32.dll", EntryPoint="SetWindowLongA", SetLastError=true)]
    		private static extern long SetWindowLong (IntPtr hwnd, int nIndex, long dwNewLong);

    for example to

C# Show Console in WPF App

Use the following snippet to declare the Win32 function

        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        private static extern bool AllocConsole();

and this one to show the console


Revisioncontrol with Git

The most fundamental difference between Git and other revision control systems like SVN or CVS is the way how you work with it. With Git you will usually clone a repository. This creates a directory on your desktop where all the data about all revisions is stored. This means that you are not depending on a server somewhere. You can easily just use git locally.


C# Performance/Memory Pitfalls

Some things you could look for in the code



Subscribe to RSS