or
имеет более низкое приоритет оператора , чем and
, таким образом y < z or z > y and y > z or z < y
эквивалентно (y < z) or (z > y and y > z) or (z < y)
, и так как y < z
True
, все выражение поэтому True
после оценки эти or
операции.
Вы можете использовать асинхронные делегаты
public class AsyncFileCopier
{
public delegate void FileCopyDelegate(string sourceFile, string destFile);
public static void AsynFileCopy(string sourceFile, string destFile)
{
FileCopyDelegate del = new FileCopyDelegate(FileCopy);
IAsyncResult result = del.BeginInvoke(sourceFile, destFile, CallBackAfterFileCopied, null);
}
public static void FileCopy(string sourceFile, string destFile)
{
// Code to copy the file
}
public static void CallBackAfterFileCopied(IAsyncResult result)
{
// Code to be run after file copy is done
}
}
Вы можете называть это так:
AsyncFileCopier.AsynFileCopy("abc.txt", "xyz.txt");
Эта ссылка расскажет вам о различных методах асинхронного кодирования
Вы можете сделать это, как эта статья предлагает:
public static void CopyStreamToStream(
Stream source, Stream destination,
Action<Stream, Stream, Exception> completed)
{
byte[] buffer = new byte[0x1000];
AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(null);
Action<Exception> done = e =>
{
if(completed != null) asyncOp.Post(delegate
{
completed(source, destination, e);
}, null);
};
AsyncCallback rc = null;
rc = readResult =>
{
try
{
int read = source.EndRead(readResult);
if(read > 0)
{
destination.BeginWrite(buffer, 0, read, writeResult =>
{
try
{
destination.EndWrite(writeResult);
source.BeginRead(
buffer, 0, buffer.Length, rc, null);
}
catch(Exception exc) { done(exc); }
}, null);
}
else done(null);
}
catch(Exception exc) { done(exc); }
};
source.BeginRead(buffer, 0, buffer.Length, rc, null);
Правильный способ копирования: используйте отдельный поток.
Вот как вы можете это сделать (синхронно):
//.. [code]
doFileCopy();
// .. [more code]
Вот как это сделать асинхронно:
// .. [code]
new System.Threading.Thread(doFileCopy).Start();
// .. [more code]
Это очень наивный способ делать вещи. Если все сделано правильно, решение будет включать в себя некоторый метод события / делегата для сообщения о состоянии копии файла и уведомления о важных событиях, таких как сбой, завершение и т. Д.
Ура, младший