Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederik Carlier <frederik.carlier@quamotion.mobi>2016-02-19 18:18:42 +0300
committerFrederik Carlier <frederik.carlier@quamotion.mobi>2016-02-20 01:04:07 +0300
commit3309b3cb839a3efa1710144d4d1535cbaa757144 (patch)
tree2e21ba0ba2bdb5aee5bdb8545595c82d680518d1 /mcs/class/WindowsBase
parent1f5f38da2d176b59b9f8a6143f35a0b42d3528fd (diff)
Add placeholders for missing methods:
* WSDualHttpBinding: Add additional constructor overloads to match .NET 4.5 * Dispatcher: Add support for the various InvokeAsync methods
Diffstat (limited to 'mcs/class/WindowsBase')
-rw-r--r--mcs/class/WindowsBase/System.Windows.Threading/Dispatcher.cs84
-rw-r--r--mcs/class/WindowsBase/System.Windows.Threading/DispatcherOperation.cs7
2 files changed, 58 insertions, 33 deletions
diff --git a/mcs/class/WindowsBase/System.Windows.Threading/Dispatcher.cs b/mcs/class/WindowsBase/System.Windows.Threading/Dispatcher.cs
index a28f7a29d0d..1eeb9c9a368 100644
--- a/mcs/class/WindowsBase/System.Windows.Threading/Dispatcher.cs
+++ b/mcs/class/WindowsBase/System.Windows.Threading/Dispatcher.cs
@@ -1,22 +1,22 @@
// TODO:
-// DispatcherObject returned by BeginInvoke must allow:
-// * Waiting until delegate is invoked.
-// See: BeginInvoke documentation for details
+// DispatcherObject returned by BeginInvoke must allow:
+// * Waiting until delegate is invoked.
+// See: BeginInvoke documentation for details
//
-// Implement the "Invoke" methods, they are currently not working.
+// Implement the "Invoke" methods, they are currently not working.
//
-// Add support for disabling the dispatcher and resuming it.
-// Add support for Waiting for new tasks to be pushed, so that we dont busy loop.
-// Add support for aborting an operation (emit the hook.operationaborted too)
+// Add support for disabling the dispatcher and resuming it.
+// Add support for Waiting for new tasks to be pushed, so that we dont busy loop.
+// Add support for aborting an operation (emit the hook.operationaborted too)
//
// Very confusing information about Shutdown: it states that shutdown is
// not over, until all events are unwinded, and also states that all events
// are aborted at that point. See 'Dispatcher.InvokeShutdown' docs,
//
// Testing reveals that
-// -> InvokeShutdown() stops processing, even if events are available,
-// there is no "unwinding" of events, even of higher priority events,
-// they are just ignored.
+// -> InvokeShutdown() stops processing, even if events are available,
+// there is no "unwinding" of events, even of higher priority events,
+// they are just ignored.
//
// The documentation for the Dispatcher family is poorly written, complete
// sections are cut-and-pasted that add no value and the important pieces
@@ -43,9 +43,11 @@
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// Copyright (c) 2006 Novell, Inc. (http://www.novell.com)
+// Copyright (c) 2016 Quamotion (http://quamotion.mobi)
//
// Authors:
// Miguel de Icaza (miguel@novell.com)
+// Frederik Carlier (frederik.carlier@quamotion.mobi)
//
using System;
using System.Collections;
@@ -181,6 +183,21 @@ namespace System.Windows.Threading {
return op;
}
+ public DispatcherOperation InvokeAsync (Action callback)
+ {
+ return this.BeginInvoke(callback);
+ }
+
+ public DispatcherOperation InvokeAsync (Action callback, DispatcherPriority priority)
+ {
+ return this.BeginInvoke(callback, priority);
+ }
+
+ public DispatcherOperation InvokeAsync (Action callback, DispatcherPriority priority, CancellationToken cancellationToken)
+ {
+ return this.BeginInvoke(callback, priority);
+ }
+
public object Invoke (Delegate method, params object[] args)
{
throw new NotImplementedException ();
@@ -521,32 +538,33 @@ namespace System.Windows.Threading {
public void Enqueue (object obj)
{
- if (size == array.Length)
- Grow ();
- array[tail] = obj;
- tail = (tail+1) % array.Length;
- size++;
+ if (size == array.Length)
+ Grow ();
+ array[tail] = obj;
+ tail = (tail+1) % array.Length;
+ size++;
}
public object Dequeue ()
- {
- if (size < 1)
- throw new InvalidOperationException ();
- object result = array[head];
- array [head] = null;
- head = (head + 1) % array.Length;
- size--;
- return result;
- }
-
- void Grow () {
- int newc = array.Length * 2;
- object[] new_contents = new object[newc];
- array.CopyTo (new_contents, 0);
- array = new_contents;
- head = 0;
- tail = head + size;
- }
+ {
+ if (size < 1)
+ throw new InvalidOperationException ();
+ object result = array[head];
+ array [head] = null;
+ head = (head + 1) % array.Length;
+ size--;
+ return result;
+ }
+
+ void Grow ()
+ {
+ int newc = array.Length * 2;
+ object[] new_contents = new object[newc];
+ array.CopyTo (new_contents, 0);
+ array = new_contents;
+ head = 0;
+ tail = head + size;
+ }
public int Count {
get {
diff --git a/mcs/class/WindowsBase/System.Windows.Threading/DispatcherOperation.cs b/mcs/class/WindowsBase/System.Windows.Threading/DispatcherOperation.cs
index 5c06c41ac26..36299db37d2 100644
--- a/mcs/class/WindowsBase/System.Windows.Threading/DispatcherOperation.cs
+++ b/mcs/class/WindowsBase/System.Windows.Threading/DispatcherOperation.cs
@@ -29,6 +29,7 @@ using System.Collections.Generic;
using System.ComponentModel;
using System.Security;
using System.Threading;
+using System.Threading.Tasks;
namespace System.Windows.Threading {
@@ -90,6 +91,12 @@ namespace System.Windows.Threading {
throw new NotImplementedException ();
}
+ public Task Task {
+ get {
+ throw new NotImplementedException();
+ }
+ }
+
public DispatcherOperationStatus Status {
get {
return status;