public bool Load(string file)
{
if (file == null)
- throw new ArgumentNullException("file");
+ throw new ArgumentNullException(nameof(file));
Interop.Elementary.elm_image_async_open_set(RealHandle, false);
Interop.Elementary.elm_image_preload_disabled_set(RealHandle, true);
public bool Load(Uri uri)
{
if (uri == null)
- throw new ArgumentNullException("uri");
+ throw new ArgumentNullException(nameof(uri));
return Load(uri.IsFile ? uri.LocalPath : uri.AbsoluteUri);
}
public unsafe bool Load(byte* img, long size)
{
if (img == null)
- throw new ArgumentNullException("img");
+ throw new ArgumentNullException(nameof(img));
Interop.Elementary.elm_image_async_open_set(RealHandle, false);
Interop.Elementary.elm_image_preload_disabled_set(RealHandle, true);
public bool Load(Stream stream)
{
if (stream == null)
- throw new ArgumentNullException("stream");
+ throw new ArgumentNullException(nameof(stream));
Interop.Elementary.elm_image_async_open_set(RealHandle, false);
Interop.Elementary.elm_image_preload_disabled_set(RealHandle, true);
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>(true = success, false = error)</returns>
/// <since_tizen> preview </since_tizen>
- public Task<bool> LoadAsync(string file, CancellationToken cancellationToken = default(CancellationToken))
+ public async Task<bool> LoadAsync(string file, CancellationToken cancellationToken = default(CancellationToken))
{
if (file == null)
- throw new ArgumentNullException("file");
+ throw new ArgumentNullException(nameof(file));
Interop.Elementary.elm_image_async_open_set(RealHandle, true);
Interop.Elementary.elm_image_preload_disabled_set(RealHandle, false);
SmartEvent loadReady = new SmartEvent(this, RealHandle, "load,ready");
loadReady.On += (s, e) =>
{
- loadReady.Dispose();
LoadingCompleted?.Invoke(this, EventArgs.Empty);
if (tcs != null && !tcs.Task.IsCompleted)
{
SmartEvent loadError = new SmartEvent(this, RealHandle, "load,error");
loadError.On += (s, e) =>
{
- loadError.Dispose();
LoadingFailed?.Invoke(this, EventArgs.Empty);
if (tcs != null && !tcs.Task.IsCompleted)
{
}
};
- bool ret = Interop.Elementary.elm_image_file_set(RealHandle, file, null);
- if (!ret)
+ using (loadReady)
+ using (loadError)
{
- throw new InvalidOperationException("Failed to set file to Image");
+ bool ret = Interop.Elementary.elm_image_file_set(RealHandle, file, null);
+ if (!ret)
+ {
+ throw new InvalidOperationException("Failed to set file to Image");
+ }
+ // it should be return on main thread, because SmartEvent should be disposed on main thread
+ return await tcs.Task.ConfigureAwait(true);
}
-
- return tcs.Task;
}
/// <summary>
public Task<bool> LoadAsync(Uri uri, CancellationToken cancellationToken = default(CancellationToken))
{
if (uri == null)
- throw new ArgumentNullException("uri");
+ throw new ArgumentNullException(nameof(uri));
return LoadAsync(uri.IsFile ? uri.LocalPath : uri.AbsoluteUri, cancellationToken);
}
public async Task<bool> LoadAsync(Stream stream, CancellationToken cancellationToken = default(CancellationToken))
{
if (stream == null)
- throw new ArgumentNullException("stream");
+ throw new ArgumentNullException(nameof(stream));
Interop.Elementary.elm_image_async_open_set(RealHandle, true);
Interop.Elementary.elm_image_preload_disabled_set(RealHandle, false);
SmartEvent loadReady = new SmartEvent(this, RealHandle, "load,ready");
loadReady.On += (s, e) =>
{
- loadReady.Dispose();
LoadingCompleted?.Invoke(this, EventArgs.Empty);
if (tcs != null && !tcs.Task.IsCompleted)
{
SmartEvent loadError = new SmartEvent(this, RealHandle, "load,error");
loadError.On += (s, e) =>
{
- loadError.Dispose();
LoadingFailed?.Invoke(this, EventArgs.Empty);
if (tcs != null && !tcs.Task.IsCompleted)
{
};
using (MemoryStream memstream = new MemoryStream())
+ using (loadReady)
+ using (loadError)
{
- await stream.CopyToAsync(memstream);
+ await stream.CopyToAsync(memstream).ConfigureAwait(true);
unsafe
{
}
}
}
+ // it should be return on main thread, because SmartEvent should be disposed on main thread
+ return await tcs.Task.ConfigureAwait(true);
}
-
- return await tcs.Task;
}
/// <summary>