|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
Привет всем! Что-то туплю или с отменой не лады какие-то: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
При отмене удаляю уже готовые файлы, но возникает исключение: обязательно последний занят другим процессом((( Что тут не так? Заранее благодарю ВС ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 09:48 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
v skopin, А поподробней можно? Оригинальный текст ошибки и где жёлтая строка вылезает? А лучше - скриншот. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:01 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
после перестарта всё заработало ОК... как я понимаю: cancellationToken.ThrowIfCancellationRequested(); это лишнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:28 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
Хотя нет: не стабильно, сейчас вылетело: ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:38 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
v skopin, авторCreating a Task that you can cancel is a four-step process: 1. Create a new instance of System.Threading.CancellationTokenSource: CancellationTokenSource tokenSource = new CancellationTokenSource 2. Call the CancellationTokenSource.Token property to get a System.Threading.CancellationToken: CancellationToken token = tokenSource.Token; 3. Create a new Task or Task<T> using an Action or Action<object> delegate and the CancellationToken from step 2 as constructor arguments: Task task1 = new Task(new Action(myMethod), token); 4. Call the Start() method on your Task or Task<T> as you would normally. To cancel a Task, simply call the Cancel() method on the CancellationTokenSource created in step 1. Task cancellation is cooperative, which means that the .NET Framework doesn’t force your tasks to finish; you have to monitor the CancellationToken you used to create your task and stop your task when you detect that a cancellation has been requested. Passing the cancellation token to the Task constructor allows the .NET Framework to avoid starting tasks that rely on tokens that have already been cancelled. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:55 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
в 20% случ. вылетает... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:56 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
v skopin, авторYou must also throw an instance of System.Threading.OperationCanceledException in your task body; this is how you acknowledge the cancellation, and if you forget, the status of your task will not be set correctly. The following code fragment shows the basic anatomy of a task body loop that polls for cancellation: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
If you don’t have any resources to release, you can simplify your code by calling the CancellationToken.ThrowIfCancellationRequested() method, which will perform the cancellation check and throw the exception in one step. This changes the loop anatomy as follows: Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 10:58 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
Не получается ни черта... Писать оно перестаёт, а вот это: destinationStream.Close(); не закрывает... все варианты опробовал((( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 11:53 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
ИМХУ попробуй паузу сделать. То что ты остановил запись и закрыл файл не значит что файл тут же закрылся. Там же еще кэш виндовса учавствует, транзакции ФС и т.д. это тоже должно успеть доработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:03 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
Просто тупо закрывается поток очень долго, синхронизация тут не при чём... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:16 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
опять туплю, а как понять, что поток закрыт? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 12:23 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
v skopin, NULL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 14:14 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
MrVoidNULL?нет((( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2015, 19:23 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
buser, есть там получше вариант: SafeFileHandle.IsClosed НО, теряется идея асинхронности ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 13:40 |
|
Отменить копирование (асинх)
|
|||
---|---|---|---|
#18+
в общем, надоело. Если кому надо на будущее: Код: c# 1. 2. 3. 4. 5. 6. 7.
лучше не выйдет, много проб всяких было ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 22:15 |
|
|
start [/forum/topic.php?fid=20&fpage=72&tid=1401010]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 323ms |
total: | 468ms |
0 / 0 |