Archief - VS: reference toevoegen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

breez

Legacy Member
Ik ben bezig met een projectje in VS2010, .NET 4.0 C#

Ik wil toegang tot google search results en had deze library gevonden:
Gapi.NET - .NET (C#) wrapper for Google AJAX API

ik voeg de DLL toe via "Add Reference" en de GAPI library komt tevoorschijn onder mijn "references"

Ik voeg de juiste imports toe ("using Gapi.Search;") en er staat niets meer in rood onderlijnt in mijn code

wanneer ik probeer te builden krijg ik een error "The type or namespace name 'Gapi' could not be found (are you missing a using directive or an assembly reference?)" en wordt m'n code opnieuw onderlijnt. Precies alsof hij de library niet kent terwijl deze wel degelijk is toegevoegd aan m'n references...

Clean solution helpt niet. Wat kan het probleem zijn?

Krueger

Legacy Member
Helpt het als je ook "using Gapi;" toevoegt?

Wat je ook kan proberen als je code rood onderlijnt wordt, is er met je muis eens boven hoveren. Als het dan een missing reference is, helpt VS je normaalgezien om deze toe te voegen.

breez

Legacy Member
Krueger zei:
Helpt het als je ook "using Gapi;" toevoegt?

Wat je ook kan proberen als je code rood onderlijnt wordt, is er met je muis eens boven hoveren. Als het dan een missing reference is, helpt VS je normaalgezien om deze toe te voegen.

als ik er met de muis over hover krijg ik idd hulp om de missing reference toe te voegen, zo had ik het gedaan. Wanneer ik echter build onderlijnt VS het echter opnieuw en doet hij alsof de library niet bestaat

using Gapi; had ik ook reeds geprobeerd

Ik heb het project nu ingesteld voor .NET Framework 2.0 en dan lijkt het wel te builden.

Blijkbaar kun je in een .NET 4.0 project geen referenties naar .NET 2.0 libraries toevoegen? Of klopt dit niet?

Albireo

Legacy Member
Ik heb het net getest en ik kan zonder probleem een .NET 2.0 DLL gebruiken in een .NET 4.0 project. En datzelfde project werkt ook zonder problemen als ik Gapi gebruik.

Of met andere woorden: ik heb geen idee waarom dat bij jou niet werkt. :$

breez

Legacy Member
heel erg vreemd... morgen nog maar eens mee experimenteren dan

Albireo

Legacy Member
Net nog een testje gedaan. GAPI werkt niet met .NET Framework 4 Client Profile. Gebruik als target framework .NET Framework 4

breez

Legacy Member
Albireo zei:
Net nog een testje gedaan. GAPI werkt niet met .NET Framework 4 Client Profile. Gebruik als target framework .NET Framework 4

zo lukt het idd ook.

hier meer uitleg gevonden :)

If you are targeting the .NET Framework 4 Client Profile, you cannot reference an assembly that is not in the .NET Framework 4 Client Profile. Instead you must target the .NET Framework 4.

breez

Legacy Member
eens iets anders nu...
Ik en multithreading in .NET is altijd al een ramp geweest. Ik probeer nu een applicatie multithreaded te maken zodat de GUI niet vasthangt terwijl resultaten verwerkt worden...

Ik heb een klasse "ResultParser" die er als volgt uit ziet:

Code:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;

namespace ZipApp
{
    public delegate void ResultParsed(ResultParsedEventArgs e);
    public delegate void ParseResultDelegate(string url);

    public class ResultParser
    {
        public static event ResultParsed OnResultParsed;
        public static ParseResultDelegate ParseResult = new ParseResultDelegate(parseResult);

        public static void parseResult(string url)
        {

            if (OnResultParsed != null)
            {
                ZipInfo info = new ZipInfo();
                try
                {
                   //hier wordt een html pagina gedownload via de WebClient klasse en verwerkt...
                }
                catch
                {
                    System.Diagnostics.Debug.WriteLine("error");
                }
                ResultParsedEventArgs args = new ResultParsedEventArgs(info);
                OnResultParsed(args);
            }
        }
    }

    public class ResultParsedEventArgs : EventArgs
    {
        private ZipInfo info;

        public ResultParsedEventArgs(ZipInfo info)
        {
            this.info = info;
        }

        public ZipInfo Info
        {
            get
            {
                return info;
            }
        }
    }
}


in mijn form heb ik volgende code:
Code:
ResultParser.OnResultParsed += new ResultParsed(ResultParser_OnResultParsed);

------------------

foreach (SearchResult sr in searchResults.Items)
{
       this.BeginInvoke(ResultParser.ParseResult, new object[] {sr.Url});
}

------------------

void ResultParser_OnResultParsed(ResultParsedEventArgs e)
        {
            txtInfo.Text += e.Info.Name + " - " + e.Info.Size + " - " + e.Info.Url + "\n\n";
        }

Stel dat er nu 20 items in die "searchResults" zitten dan smijt ie alle resultaten in 1 keer in m'n textbox en hangt m'n form een paar seconden vast... Terwijl het de bedoeling is dat de resultaten er stap voor stap op komen... Wat doe ik verkeerd?

Krueger

Legacy Member
breez zei:
eens iets anders nu...
Ik en multithreading in .NET is altijd al een ramp geweest. Ik probeer nu een applicatie multithreaded te maken zodat de GUI niet vasthangt terwijl resultaten verwerkt worden...

Ik heb een klasse "ResultParser" die er als volgt uit ziet:

Code:
...

Stel dat er nu 20 items in die "searchResults" zitten dan smijt ie alle resultaten in 1 keer in m'n textbox en hangt m'n form een paar seconden vast... Terwijl het de bedoeling is dat de resultaten er stap voor stap op komen... Wat doe ik verkeerd?
Het kan zijn dat ik niet 100% juist ben, dus vul maar aan indien fout.
Je zit hier verkeerd met je gebruik van BeginInvoke.
Op MSDN lees je volgende uitleg:
"Executes the specified delegate asynchronously on the thread that the control's underlying handle was created on." Dus je voert ResultParser.ParseResult uit op de GUI thread, waardoor deze blokkeert. Wat jij wilt is dat je berekeningen op een andere thread gebeuren, en dan kan je je label updaten met je BeginInvoke methode.
Als je .Net 4.0 gebruikt, heb je trouwens nog meer middelen ter beschikkingen om eenvoudiger aan multithreading te doen.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan