c# Is passing a CancellationToken okay?
Would it be okay to run a method like this in my Tasks when updating my WPF UI?
public static void InvokeOnUiThread(Action action, CancellationToken token)
{
if (Application.Current == null) return;
if (Application.Current.Dispatcher.CheckAccess())
{
action();
}
else
{
if (token.IsCancellationRequested) return;
Application.Current.Dispatcher.Invoke(action);
}
}
I'd also like to pass a null but havent figured out how to make CancellationToken nullable.
c# wpf
add a comment |
Would it be okay to run a method like this in my Tasks when updating my WPF UI?
public static void InvokeOnUiThread(Action action, CancellationToken token)
{
if (Application.Current == null) return;
if (Application.Current.Dispatcher.CheckAccess())
{
action();
}
else
{
if (token.IsCancellationRequested) return;
Application.Current.Dispatcher.Invoke(action);
}
}
I'd also like to pass a null but havent figured out how to make CancellationToken nullable.
c# wpf
3
CancellationToken.None
is the "null" equivalent
– sellotape
Nov 10 at 19:59
1
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32
add a comment |
Would it be okay to run a method like this in my Tasks when updating my WPF UI?
public static void InvokeOnUiThread(Action action, CancellationToken token)
{
if (Application.Current == null) return;
if (Application.Current.Dispatcher.CheckAccess())
{
action();
}
else
{
if (token.IsCancellationRequested) return;
Application.Current.Dispatcher.Invoke(action);
}
}
I'd also like to pass a null but havent figured out how to make CancellationToken nullable.
c# wpf
Would it be okay to run a method like this in my Tasks when updating my WPF UI?
public static void InvokeOnUiThread(Action action, CancellationToken token)
{
if (Application.Current == null) return;
if (Application.Current.Dispatcher.CheckAccess())
{
action();
}
else
{
if (token.IsCancellationRequested) return;
Application.Current.Dispatcher.Invoke(action);
}
}
I'd also like to pass a null but havent figured out how to make CancellationToken nullable.
c# wpf
c# wpf
asked Nov 10 at 19:56
rob morgan
302415
302415
3
CancellationToken.None
is the "null" equivalent
– sellotape
Nov 10 at 19:59
1
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32
add a comment |
3
CancellationToken.None
is the "null" equivalent
– sellotape
Nov 10 at 19:59
1
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32
3
3
CancellationToken.None
is the "null" equivalent– sellotape
Nov 10 at 19:59
CancellationToken.None
is the "null" equivalent– sellotape
Nov 10 at 19:59
1
1
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32
add a comment |
1 Answer
1
active
oldest
votes
Try making it an optional parameter with a default value
static void InvokeOnUiThread(Action action, CancellationToken token = default(CancellationToken)) {
//...
}
That way the method can be called with just the action
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242859%2fc-sharp-is-passing-a-cancellationtoken-okay%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Try making it an optional parameter with a default value
static void InvokeOnUiThread(Action action, CancellationToken token = default(CancellationToken)) {
//...
}
That way the method can be called with just the action
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
add a comment |
Try making it an optional parameter with a default value
static void InvokeOnUiThread(Action action, CancellationToken token = default(CancellationToken)) {
//...
}
That way the method can be called with just the action
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
add a comment |
Try making it an optional parameter with a default value
static void InvokeOnUiThread(Action action, CancellationToken token = default(CancellationToken)) {
//...
}
That way the method can be called with just the action
Try making it an optional parameter with a default value
static void InvokeOnUiThread(Action action, CancellationToken token = default(CancellationToken)) {
//...
}
That way the method can be called with just the action
answered Nov 10 at 21:14
Nkosi
109k16116184
109k16116184
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
add a comment |
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
Any idea what Hans is talking about, Isn't the token a ref?
– rob morgan
Nov 11 at 2:08
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53242859%2fc-sharp-is-passing-a-cancellationtoken-okay%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
3
CancellationToken.None
is the "null" equivalent– sellotape
Nov 10 at 19:59
1
It is not okay. The odds that it got cancelled a nanosecond after you called the method are zero.
– Hans Passant
Nov 10 at 22:18
I thought it was a check to see if cancel was already requested so it wont go to the UI. What am I misunderstanding?
– rob morgan
Nov 11 at 0:32