gunkrr Ответов: 2

Предупреждающее сообщение "vshost.exe перестал работать"


У меня есть проблема с vshost.exe. В начале моего использования этого кода программа работает правильно, но после того, как я скопирую программу, теперь появляется такое предупреждение: vshost.exe перестал работать
Что заставляет это происходить? код выглядит следующим образом:

YIQprocess2 YIQ2 = new YIQprocess2();
YIQ2.Image = EditImage;
YIQ2.YIQmethod2();
//this.Invalidate();
cetakgambar();


Это мой класс :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;

namespace SkinCancerR01.BusinessRule
{
    public class YIQprocess2
    {
        public Bitmap Image { get; set; }
        public int seed, t, nilaikecil, nilaibesar, sementara;

        public void YIQmethod2()
        {
            Bitmap EditImage = this.Image;
            // GDI+ still lies to us - the return format is BGR, NOT RGB.
            BitmapData bmData = EditImage.LockBits(new Rectangle(0, 0, EditImage.Width, EditImage.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);

            int stride = bmData.Stride;
            System.IntPtr Scan0 = bmData.Scan0;

            unsafe
            {
                byte* p = (byte*)(void*)Scan0;

                int nOffset = stride - EditImage.Width * 3;

                byte red, green, blue, Yx, Ix, Qx;

                for (int y = 0; y < EditImage.Height; ++y)
                {
                    for (int x = 0; x < EditImage.Width; ++x)
                    {
                        blue = p[x];
                        green = p[x + 1];
                        red = p[x + 2];
                        Yx = (byte)(.299 * red + .587 * green + .114 * blue);
                        Ix = (byte)(.596 * red - .275 * green - .321 * blue);
                        Qx = (byte)(.212 * red - .528 * green + .311 * blue);

                        if ((y == 0) && (x == 0))
                        {
                            nilaikecil = Yx;
                            nilaibesar = Yx;
                        }
                        else
                        {
                            if (Yx < nilaikecil)
                            {
                                nilaikecil = Yx;
                            }
                            else if (Yx > nilaibesar)
                            {
                                nilaibesar = Yx;
                            }
                        }
                        p += 3;
                    }
                    p += nOffset;
                }
            }

            t = (nilaibesar - nilaikecil) / 3;

            unsafe
            {
                byte* p = (byte*)(void*)Scan0;

                int nOffset = stride - EditImage.Width * 3;

                byte red, green, blue, Yx, Ix, Qx;

                for (int y = 0; y < EditImage.Height; ++y)
                {
                    for (int x = 0; x < EditImage.Width; ++x)
                    {
                        blue = p[x];
                        green = p[x + 1];
                        red = p[x + 2];
                        Yx = (byte)(.299 * red + .587 * green + .114 * blue);
                        Ix = (byte)(.596 * red - .275 * green - .321 * blue);
                        Qx = (byte)(.212 * red - .528 * green + .311 * blue);

                        //supaya setiap y baru seed juga baru
                        if ((x == 0) || (seed == 0))
                        {
                            //mengambil value seed
                            seed = Yx;
                        }
                        else
                        {
                            sementara = Yx - seed;
                            sementara = Math.Abs(sementara);
                            if (sementara >= t)
                            {
                                for (int i = 0; i < 2; ++i)
                                {
                                    p[x] = p[x + 1] = p[x + 2] = 255;
                                    ++x;
                                }

                                seed = 0;
                            }
                        }

                        p += 3;
                    }
                    p += nOffset;
                }
            }

            EditImage.UnlockBits(bmData);
        }
    }
}

Indivara

Незначительное редактирование-форматирование и заголовок

gunkrr

спасибо

2 Ответов

Рейтинг:
15

Anupama Roy

Вы должны найти это vshost.exe в папке bin или в папке debug вашего приложения.Это не требуется при развертывании приложения.Поэтому попробуйте удалить это & затем запустите снова.

Вы можете настроить Visual Studio таким образом, чтобы vshost.exe файл не создается следующими шагами.
1. Щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Свойства

2. Перейдите на вкладку отладка, если она еще не выбрана.

3. Снимите флажок Включить визуальные студии, хостинг-процесс под включить Отладчики разделе


Nish Nishant

Проголосовали 5, предложили в качестве ответа.

Anupama Roy

Спасибо!

Espen Harlinn

Интересно - 5+ - разве это не тот процесс, который позволяет отлаживать 64-битные процессы с помощью 32-битной Visual Studio?

AjitRaje

спасибо друзьям за правильное решение

Dhiren M

Решить мою проблему. Я попробовал некоторые другие решения из других статей, но они не сработали. Это решение работает на меня.

Рейтинг:
12

Sergey Alexandrovich Kryukov

Я воссоздал проект на основе вашего кода - он работает.

Вы должны были предоставить больше кода, потому что ваши основные строки кода не компилировались. Мне пришлось добавить немного растрового изображения вместо EditImage и убрать cetakgambar() чего не хватает. Это не имеет значения: код выполняется под управлением Visual Studio.

Шаги: 1) создан новый проект; 2) добавлена справочная система.Рисование; 3) добавлен ваш класс; 4) добавлен ваш основной код с измененным (см. выше); 5) в настройках проекта разрешен небезопасный.

Вот и все. Вам нужно сделать несколько вещей:
1) на данный момент просто воссоздайте свой проект.
2) Узнайте, как перемещать проекты и поддерживать их; я надеюсь, что вы знаете больше всего, но все же должен быть подвох, так что:
2а) узнайте, как работать со всеми именами путей относительно местоположения вашего файла проекта; никаких абсолютных имен;
2b) сортируйте истинный исходный код от всего остального, промежуточного, специфичного для пользователя, двоичных файлов и т. д... Всегда удаляйте не исходный код перед перемещением, копированием, упаковкой, отправкой проекта. Подсказка: с C# проекта, удалить "бин", "параметр obj", "*.пользователя", "*.СУО".
2c) с другой стороны, когда мусор будет удален, переместите всю файловую структуру точно так, как есть.
3) Перестаньте работать без системы контроля версий - бесплатно, с открытым исходным кодом, локально (или нет), легко использовать. Это сэкономит вам много времени и убережет от серьезных неприятностей.

Итак, я не знаю точного ответа на то, что произошло (потому что вы не поделились подробностями о том, как вы все испортили), но я объяснил, как восстановиться и избежать этой проблемы в будущем.

Удачи.


Espen Harlinn

5 + хороший подход

Sergey Alexandrovich Kryukov

- Спасибо, Эспен.
--СА