c# - Tasks and Binding works but every now and then I get an error out of the blue -
this learning application and
i'm trying make simple animation using dispachtimer , image control. have 3 images jump through every 100 ms. works great after time passes error.
i notice when decrease time interval garbage collector doesn't fire often. i'm new wpf , love wrap brain around whats happening. once again, animation work random amount of time.
**
must create dependencysource on same thread dependencyobject.
**
public class viewmodel : inotifypropertychanged { public event propertychangedeventhandler propertychanged; public void raisepropertychanged(string propertyname) { if (propertychanged != null) subscribed event { propertychanged(this, new propertychangedeventargs(propertyname)); } } private imagesource _imagesourceheader_image; public imagesource imagesourceheader_image { { return _imagesourceheader_image; } set { _imagesourceheader_image = value; raisepropertychanged("imagesourceheader_image"); } } public viewmodel() { startanimationasync(); } public void startanimationasync() { dispatchertimer timer = new dispatchertimer(); timer.interval = new timespan(0, 0, 0, 0, 10); timer.start(); timer.tick += timer_tick; } int = 1; private async void timer_tick(object sender, eventargs e) { await task.run(() => { if (i < 4 ) { imagesourceheader_image = new bitmapimage(new uri("pack://application:,,,/images/" + i.tostring() + ".jpg")); imagesourceheader_image.freeze(); } else { = 1; imagesourceheader_image = new bitmapimage(new uri("pack://application:,,,/images/" + i.tostring() + ".jpg")); imagesourceheader_image.freeze(); } = + 1; }); } }
thank you
try this,
private void timer_tick(object sender, eventargs e) { task.run(() => { if (i < 4 ) { imagesourceheader_image = new bitmapimage(new uri("pack://application:,,,/images/" + i.tostring() + ".jpg")); imagesourceheader_image.freeze(); } else { = 1; imagesourceheader_image = new bitmapimage(new uri("pack://application:,,,/images/" + i.tostring() + ".jpg")); imagesourceheader_image.freeze(); } = + 1; }); }
Comments
Post a Comment