Continue a canceled task
Inside my code i'm using Sqlserver async.
If i will request CancellationTokenSource in my query i can't re use it in same Activity.
Example
CancellationTokenSource cts; //Global
cts = new CancellationTokenSource();//OnCreate Method
BtnClik1
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, connection))
{
await connection.OpenAsync(cts.Token);
await cmd.ExecuteNonQueryAsync(cts.Token);
}
BtnClick2
if (cts.Token != null)
cts.Cancel();
If i will press for some reson BtnClick2, then i cant re use BtnClick1, I'm taking error System Threadin tasks exception, A task was canceled
c# xamarin
add a comment |
Inside my code i'm using Sqlserver async.
If i will request CancellationTokenSource in my query i can't re use it in same Activity.
Example
CancellationTokenSource cts; //Global
cts = new CancellationTokenSource();//OnCreate Method
BtnClik1
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, connection))
{
await connection.OpenAsync(cts.Token);
await cmd.ExecuteNonQueryAsync(cts.Token);
}
BtnClick2
if (cts.Token != null)
cts.Cancel();
If i will press for some reson BtnClick2, then i cant re use BtnClick1, I'm taking error System Threadin tasks exception, A task was canceled
c# xamarin
1
After callingCancelyou will have to create a new instance and assign it toctsusingcts = new CancellationTokenSource();
– Peter Bons
Nov 20 '18 at 7:09
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
1
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12
add a comment |
Inside my code i'm using Sqlserver async.
If i will request CancellationTokenSource in my query i can't re use it in same Activity.
Example
CancellationTokenSource cts; //Global
cts = new CancellationTokenSource();//OnCreate Method
BtnClik1
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, connection))
{
await connection.OpenAsync(cts.Token);
await cmd.ExecuteNonQueryAsync(cts.Token);
}
BtnClick2
if (cts.Token != null)
cts.Cancel();
If i will press for some reson BtnClick2, then i cant re use BtnClick1, I'm taking error System Threadin tasks exception, A task was canceled
c# xamarin
Inside my code i'm using Sqlserver async.
If i will request CancellationTokenSource in my query i can't re use it in same Activity.
Example
CancellationTokenSource cts; //Global
cts = new CancellationTokenSource();//OnCreate Method
BtnClik1
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(query, connection))
{
await connection.OpenAsync(cts.Token);
await cmd.ExecuteNonQueryAsync(cts.Token);
}
BtnClick2
if (cts.Token != null)
cts.Cancel();
If i will press for some reson BtnClick2, then i cant re use BtnClick1, I'm taking error System Threadin tasks exception, A task was canceled
c# xamarin
c# xamarin
asked Nov 20 '18 at 7:06
dddddd
357
357
1
After callingCancelyou will have to create a new instance and assign it toctsusingcts = new CancellationTokenSource();
– Peter Bons
Nov 20 '18 at 7:09
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
1
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12
add a comment |
1
After callingCancelyou will have to create a new instance and assign it toctsusingcts = new CancellationTokenSource();
– Peter Bons
Nov 20 '18 at 7:09
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
1
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12
1
1
After calling
Cancel you will have to create a new instance and assign it to cts using cts = new CancellationTokenSource();– Peter Bons
Nov 20 '18 at 7:09
After calling
Cancel you will have to create a new instance and assign it to cts using cts = new CancellationTokenSource();– Peter Bons
Nov 20 '18 at 7:09
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
1
1
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12
add a comment |
1 Answer
1
active
oldest
votes
You could do something like this
private CancellationTokenSource _cts;
private object syncObj = new Object();
public void BtnClik1(...)
{
lock(syncObj)
{
_cts = _cts ?? new CancellationTokenSource();
}
...
}
public void BtnClik2(...)
{
lock(syncObj)
{
cts?.Cancel();
cts?.Dispose();
cts = null;
}
}
Note : the locking isn't really needed as there is probably bigger thread safety issues.
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
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%2f53387863%2fcontinue-a-canceled-task%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
You could do something like this
private CancellationTokenSource _cts;
private object syncObj = new Object();
public void BtnClik1(...)
{
lock(syncObj)
{
_cts = _cts ?? new CancellationTokenSource();
}
...
}
public void BtnClik2(...)
{
lock(syncObj)
{
cts?.Cancel();
cts?.Dispose();
cts = null;
}
}
Note : the locking isn't really needed as there is probably bigger thread safety issues.
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
add a comment |
You could do something like this
private CancellationTokenSource _cts;
private object syncObj = new Object();
public void BtnClik1(...)
{
lock(syncObj)
{
_cts = _cts ?? new CancellationTokenSource();
}
...
}
public void BtnClik2(...)
{
lock(syncObj)
{
cts?.Cancel();
cts?.Dispose();
cts = null;
}
}
Note : the locking isn't really needed as there is probably bigger thread safety issues.
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
add a comment |
You could do something like this
private CancellationTokenSource _cts;
private object syncObj = new Object();
public void BtnClik1(...)
{
lock(syncObj)
{
_cts = _cts ?? new CancellationTokenSource();
}
...
}
public void BtnClik2(...)
{
lock(syncObj)
{
cts?.Cancel();
cts?.Dispose();
cts = null;
}
}
Note : the locking isn't really needed as there is probably bigger thread safety issues.
You could do something like this
private CancellationTokenSource _cts;
private object syncObj = new Object();
public void BtnClik1(...)
{
lock(syncObj)
{
_cts = _cts ?? new CancellationTokenSource();
}
...
}
public void BtnClik2(...)
{
lock(syncObj)
{
cts?.Cancel();
cts?.Dispose();
cts = null;
}
}
Note : the locking isn't really needed as there is probably bigger thread safety issues.
answered Nov 20 '18 at 7:11
TheGeneralTheGeneral
29.2k63365
29.2k63365
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
add a comment |
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
What do i need to set it null? Dispose isn't the same?
– ddd
Nov 20 '18 at 7:19
1
1
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
@ddd So you don't use it again, its good practice
– TheGeneral
Nov 20 '18 at 7:19
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
One last question, doest Finish my activity disposes my CancellationTokenSource? Or i need to dispose it every time i close my activity?
– ddd
Nov 20 '18 at 7:25
1
1
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
@ddd it only needs to be disposed if it's been canceled. However if you form/activity what ever creates the cs goes out of scope you should dispose it
– TheGeneral
Nov 20 '18 at 7:29
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.
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%2f53387863%2fcontinue-a-canceled-task%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

1
After calling
Cancelyou will have to create a new instance and assign it toctsusingcts = new CancellationTokenSource();– Peter Bons
Nov 20 '18 at 7:09
Thank you ok, now i will understand my problem. Should i also dispose cts before creating a new one?
– ddd
Nov 20 '18 at 7:11
1
Yes, you should
– Peter Bons
Nov 20 '18 at 7:12