I think at this point we'll need a complete sample, so that we can see
how/where the GetWind() method is invoked. It's also possible that this is a
bug in Mono for Android, so filing a complete test case at bugzilla.xamarin.com
would help. :-)
- Jon
On Sep 25, 2011, at 10:13 AM, John Murray wrote:
> That's just it Sri
> All I have is ButtonClick+=delegate{GetWind(ds);};
>
> Getwind(ds) is called again only from different buttons which are not
> involved in this process
>
> There's no other eventhandler attached to this particular button
>
> Are you saying that if One defines the event handler as a delegate in the
> above way it will call it twice?
>
> Still puzzled but Tx hugely for responding
> Beginning to think I should rename it PassWind() :-)
>
> John Murray
>
>
> -----Original Message-----
> From: SRI [mailto:[email protected]]
> Sent: 25 September 2011 2:49 PM
> To: [email protected]; Discussions related to Mono for Android
> Subject: Re: [mono-android] sharing violation and a method which seems to
> run twice
>
> HI,
>
> Are you attaching two times the event Handlers to the Button
> Click. Basically is
> is this call Button.Click+=delegate{GetWind(ds);} executed twice.
>
> Then also this method (GetWind(ds) will execute twice.
>
> Best Regards,
> Sridharan Srinivasan
> Alias Sri
>
> On Sun, Sep 25, 2011 at 4:23 AM, John Murray <[email protected]> wrote:
>> I posted a previous query on this – I have changed the thread calling but
> I
>> still have an very odd error
>>
>>
>>
>> I Have a method called from a delegate on a simple button press
>> Button.Click+=delegate{GetWind(ds);};
>>
>>
>>
>> This method checks if the given weather chart has already been downloaded
>> and saved to sdcard (and is current by its date tag)
>>
>> If not it downloads another wx chart and saves that
>>
>>
>>
>> What seems to happen is that it runs through the GetWind() routine twice
> and
>> encounters a sharing violation or sometimes a java.land throw exception
> and
>> sometimes simply unhandled exception
>>
>>
>>
>> Usually happens when trying to save the bitmap (the save method is nothing
>> special –
>>
>> WXclass5.windmap.Compress(Bitmap.CompressFormat.Png, 85, new
>> System.IO.FileStream(filename,FileMode.Create));
>>
>>
>>
>>
>>
>> What seems to happen on stepping through debug is that it steps around a
>> second time and calls this save method twice and it is on this second time
>> around that the exception occurs
>>
>>
>>
>> <Sri> has suggested that this might be due to running on several threads
>>
>> I did call this method using ThreadPool.QueueUserWorkItem(o =>
>> GetWind(ds));
>>
>> But I have taken that out (see below I have commented out UI lines
>>
>> SO there is no calling threads (as far as I can see )
>>
>>
>>
>> Can anyone explain why this code doesn’t work
>>
>>
>>
>>
>>
>> private void GetWind(string ds) // ds is a date and time stamp for a
>> given wx chart
>>
>> {
>>
>> string filename = "";
>>
>> string mystr = this.GetFileStreamPath("").ToString();
>>
>> filename = mystr + "/wmap" + WXclass5.altsel + "#" + ds +
>> "$" + WXclass5.windmapexpires + ".png";
>>
>> int rtn =
>> WXclass5.checksavedwindmap(this,filename);
>>
>> if ( rtn < 0)
>>
>> {
>>
>> try
>>
>> {
>>
>> WXclass5.getwindmap(ds, WXclass5.altsel.ToString());
>>
>> filename = mystr + "/wmap" + WXclass5.altsel + "#" +
> ds
>> + "$" + WXclass5.windmapexpires + ".png";
>>
>> WXclass5.saveBMP(this,filename);
>>
>> }catch(System.Exception xe)
>>
>> { Toast.MakeText(this, "Error load wx
>> wind \n" + xe.Message, ToastLength.Long).Show(); }
>>
>> }
>>
>> else
>>
>> {
>>
>> filename =
>> mystr+"/"+WXclass5.pnglist[rtn];
>>
>> FileStream fs = new
>> FileStream(filename, FileMode.Open, FileAccess.Read);
>>
>> System.IO.BufferedStream buf = new
>> System.IO.BufferedStream(fs);
>>
>> bm = BitmapFactory.DecodeStream(buf);
>>
>> if (fs != null)
>>
>> {
>>
>>
> fs.Close();
>>
>> }
>>
>> if (buf != null)
>>
>> {
>>
>> buf.Close();
>>
>> }
>>
>> WXclass5.windmap = bm;
>>
>> filename="";
>>
>> }
>>
>>
>>
>> // RunOnUiThread( () =>t1.Text = WXclass5.getaltstring());
>>
>> // RunOnUiThread( () =>
>> t1.SetBackgroundColor(Color.Transparent));
>>
>> // RunOnUiThread( () =>
>> t1.TextSize=16);
>>
>> //RunOnUiThread( () =>i1.ImageMatrix.Set(mm));
>>
>> //RunOnUiThread( () =>i1.SetImageBitmap(WXlass5.windmap));
>>
>> //RunOnUiThread( () =>pb.Visibility=ViewStates.Invisible);
>>
>>
>>
>> i1.ImageMatrix.Set(mm);
>>
>>
>> i1.SetImageBitmap(WXclass5.windmap);
>>
>>
>> pb.Visibility=ViewStates.Invisible;
>>
>> }
>>
>>
>>
>>
>>
>> Any help would e much appreciated – been stuck on this for several days
> now
>>
>> John Murray
>>
>> _______________________________________________
>> Monodroid mailing list
>> [email protected]
>>
>> UNSUBSCRIBE INFORMATION:
>> http://lists.ximian.com/mailman/listinfo/monodroid
>>
>>
>
>
>
> --
> Sridharan Srinivasan
> Alias Sri
> Ph:(65)98255785/(65)63922439
> www.arshu.com
> _______________________________________________
> Monodroid mailing list
> [email protected]
>
> UNSUBSCRIBE INFORMATION:
> http://lists.ximian.com/mailman/listinfo/monodroid
_______________________________________________
Monodroid mailing list
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid