System.Windows.MessageBox не дожидается ввода пользователя перед запуском!

... и не имеет смысла почему. TT

В моем обработчике событий Application_Startup у меня есть код, который выглядит примерно так:

private void Application_Startup(object sender, StartupEventArgs e)
{
    string errorMessage;

    if(CheckStartUpConditions(out errorMessage))
    {
        (new MainWindow()).Show();
    }
    else
    {
        MessageBox.Show(errorMessage, "Application Startup", 
            MessageBoxButton.OK, MessageBoxImage.Error);

        Shutdown();
    }
}

private bool CheckStartUpConditions(out string errorMessage)
{
    errorMessage = string.Empty;  

    if(...)
        errorMessage += "Please login to xxx. ";

    if(...)
        errorMessage += "Please install xxx.";

    if(string.IsNullOrEmpty(errorMessage))
        return true;
    else
        return false;
}

Окно сообщения ненадолго появляется примерно на секунду перед тем, как сказать «POOF!» Не дожидаясь, пока я нажму «ОК» или кнопку «Х». Я действительно озадачен, почему это происходит, поэтому любая помощь будет очень признательна .

Я пробовал закомментировать вызов Shutdown только для шуток и хихиканья, и он по-прежнему ведет себя так же.

Кроме того, в приложении есть SplashScreen , поэтому я не знаю, влияет ли это на это.

РЕДАКТИРОВАТЬ: Я добавил дополнительный код, если это поможет. В окне сообщения отображается правильное сообщение об ошибке. Просто не останется достаточно долго, чтобы пользователи ее прочитали. >: как средний фильтр (средний фильтр) или алгоритм суммы абсолютных разностей при обработке изображений. По мере того, как ядро ​​перемещается в следующую позицию, будут происходить некоторые избыточные чтения из памяти, потому что данные, заключенные в новое ядро, будут частично перекрывать данные предыдущего.

Позвольте мне объяснить на практическом примере ... Предположим, вы хотите выполнить медианный фильтр на большой 2D-матрице с размером ядра (окна) 3x3. Первая позиция ядра (красная на изображении ниже) будет центрирована в (1,1), вторая позиция (зеленая) будет центрирована в (1,2). Обратите внимание, как желтая область - это перекрытие, и теперь эти значения необходимо перезагрузить из памяти.

meanfilter

Моя конкретная проблема - это трехмерный средний фильтр, поэтому перекрытие еще больше (3 ^ 3-3 ^ 2 = 18 для 3D и 3 ^ 2-3 = 6 для 2D).

Я уверен, что это обычная проблема ...

Мне нужно загрузить изображение на сервер, для которого я написал код с помощью NSMutableURLRequest, как этот

NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
//  
//  /*
//   now lets create the body of the post
//   */
    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile%@.jpg\"\r\n",self.fileID] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

Я полагаю, мой PHP-скрипт отвечает этому и работает нормально

как я могу реплицировать вышеизложенное в ASIFormDataRequest?

пытался сделать это

ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL: 
                               [NSURL URLWithString:photoUploadURLString]]; 


NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    [request addValue:contentType forHTTPHeaderField: @"Content-Type"];

    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile%@.jpg\"\r\n",self.fileID] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[NSData dataWithData:imageData]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

[request addData:body withFileName:filename andContentType:@"image/jpeg" forKey:@"snapshot[image]"]; 
request.uploadProgressDelegate = self.progressView; 
[request setDidFinishSelector:@selector(getFacebookPhotoFinished:)];

, но безуспешно?

вот подробности моих PHP-скриптов


, которые я сделал согласно Cyprian

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"images/ipodfile%@.jpg", fileID]];
NSData *imageData = UIImageJPEGRepresentation([itemImageView image], 0.05);
if (imageData != nil) {
    [imageData writeToFile:savedImagePath atomically:YES];
}
if ([[NSFileManager defaultManager] createFileAtPath:savedImagePath contents:imageData attributes:nil])
{
    NSLog(@"Image saved");
} else {
    NSLog(@"Image not saved");
}           


[activityIndicator startAnimating];
NSString *photoUploadURLString = @"http://example.com/imageuploader.php";

NSString* filename = [NSString stringWithFormat:@"ipodfile%@.jpg", self.fileID];
NSLog(@"url  is %@/%@",photoUploadURLString, filename);

UIImage *newImage = [[UIImage alloc] init];
newImage=[itemImageView image];
NSURL *url=[NSURL URLWithString:photoUploadURLString];

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"userfile" forKey:@"name"];
[request setPostValue:filename forKey:@"filename"];

[request setData:imageData withFileName:filename andContentType:@"image/jpeg" forKey:@"snapshot[image]"];

7
задан Ankit Sachan 7 May 2011 в 23:17
поделиться