multi application

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • RobcPettit@yahoo.co.uk

    multi application

    Hi, Ive written my application and published it. Leaving the editor
    open, I install my newly made application and run it. Works perfect,
    then I open it a second time so Ive got two instances of the same
    application running. The second crashes bringing them both down, when
    I choose stop debugging. Could take 2mins, sometimes 10mins. Is this
    anything to do with how Im publishing, or could they be cross
    referencing each other. I wondering if in code, Im supposed to tel to
    2nd 3rd etc that this is a new instance.
    Regards Robert
  • RobcPettit@yahoo.co.uk

    #2
    Re: multi application

    Thankyou for your reply. The application connects to betfairs api and
    gets current odds on horses in a particular race. I dont think theres
    shared resources on the pc. Ive looked at the limits to the api as im
    using there free version. I do have a off the shelf application which
    does a simular job, and I can open this multiple times with out
    conflict, which makes me think its not the api, as it uses the same
    api. It happens when one goes to collect the prices, and the object is
    null. Im thinking now that it may be a threading problem.
    regards Robert

    Comment

    • RobcPettit@yahoo.co.uk

      #3
      Re: multi application

      Can I enter large chunks of code here. This is were it breaks down.
      Before tis Im basically loading the form, adding a graph and user
      control were the odds are shown. What Im going to try is to write a
      second application using a different names just to see that its if its
      me or the api.

      #region
      GetMarketPrices CompressedTask_ OnGetGetMarketP ricesCompressed (betfair.UK.exc hange.GetMarket PricesResp
      respUK, betfair.AU.exch ange.GetMarketP ricesCompressed Resp respAU,
      Tasks.BettingEx changeType m_exchange)
      private void
      GetMarketPrices CompressedTask_ OnGetGetMarketP ricesCompressed (betfair.UK.exc hange.GetMarket PricesCompresse dResp
      respUK, betfair.AU.exch ange.GetMarketP ricesCompressed Resp respAU)
      {
      if (InvokeRequired )
      {
      Invoke(new
      Tasks.GetMarket PricesCompresse dTask.OnGetMark etPricesCompres sedDelegate(Get MarketPricesCom pressedTask_OnG etGetMarketPric esCompressed),
      new object[] { respUK, respAU });
      }
      else
      {
      if (respUK != null)
      {

      string[] status;


      string[] prices =
      (respUK.marketP rices).Split('| '); // will return an array of 3 strings
      etc.

      if (prices[0].Contains("NR") )
      {
      status = prices[0].Split('~');

      prices = (respUK.marketP rices).Split(': '); //
      will return an array of 3 strings etc.

      }
      else
      {
      prices = (respUK.marketP rices).Split(': '); //
      will return an array of 3 strings etc.

      status = prices[0].Split('~');

      }
      double inplay = double.Parse(st atus[3]);
      if (inplay == 0)
      {

      if (status[2] != "CLOSED")
      {
      //if (status[2] != "SUSPENDED" )
      //{
      lblMarketStatus .Text = status[2];
      lblLastRefresh. Text = status[8];

      for (int i = 1; i <
      (prices.GetUppe rBound(0)) + 1; i++)
      {
      if ((prices[i].Contains("\\") ) |
      (prices[i].Contains(")")) )
      {
      }
      else
      {

      string[] data =
      prices[i].Split('|');
      string[] ids =
      data[0].Split('~');
      string comb = data[1] +
      data[2];
      string[] values =
      comb.Split('~') ;


      if (ids[0] ==
      selectionId.ToS tring())
      {


      string rowName = ids[0];
      MarketViewRow row =
      (MarketViewRow) m_marketViewRow s[rowName];

      double backPrice1 = 0.0;
      backAmountAvail able1 =
      0.0;
      if (values.Length 1)
      {
      if (values[0] != null)
      {
      backPrice1 =
      double.Parse(va lues[0]);

      backAmountAvail able1 = double.Parse(va lues[1]);
      }
      }

      double backPrice2 = 0.0;
      backAmountAvail able2 =
      0.0;
      if (values.Length 5)
      {
      if (values[4] != null)
      {
      backPrice2 =
      double.Parse(va lues[4]);

      backAmountAvail able2 = double.Parse(va lues[5]);
      }
      }

      double backPrice3 = 0.0;
      backAmountAvail able3 =
      0.0;
      if (values.Length 9)
      {
      if (values[8] != null)
      {
      backPrice3 =
      double.Parse(va lues[8]);

      backAmountAvail able3 = double.Parse(va lues[9]);
      }
      }

      double layPrice1 = 0.0;
      layAmountAvaila ble1 = 0.0;
      if (values.Length 13)
      {
      if (values[12] !=
      null)
      {
      layPrice1 =
      double.Parse(va lues[12]);

      layAmountAvaila ble1 = double.Parse(va lues[13]);
      }
      }

      double layPrice2 = 0.0;
      layAmountAvaila ble2 = 0.0;
      if (values.Length 17)
      {
      if (values[16] !=
      null)
      {
      layPrice2 =
      double.Parse(va lues[16]);

      layAmountAvaila ble2 = double.Parse(va lues[17]);
      }
      }

      double layPrice3 = 0.0;
      layAmountAvaila ble3 = 0.0;
      if (values.Length 21)
      {
      if (values[20] !=
      null)
      {
      layPrice3 =
      double.Parse(va lues[20]);

      layAmountAvaila ble3 = double.Parse(va lues[21]);
      }
      }



      //
      =============== =============== =============== =============== =============== =============== ===========
      //CALCS


      row.DisplayPric es("uk",
      backPrice1, backAmountAvail able1, backPrice2, backAmountAvail able2,
      backPrice3, backAmountAvail able3, layPrice1, layAmountAvaila ble1,
      layPrice2, layAmountAvaila ble2, layPrice3, layAmountAvaila ble3);

      double allbacks =
      (backAmountAvai lable1 + backAmountAvail able2 + backAmountAvail able3);
      double alllays =
      (layAmountAvail able1 + layAmountAvaila ble2 + layAmountAvaila ble3);
      double totalbacklay =
      (allbacks + alllays);

      percentCount =
      (((allbacks) / (allbacks + alllays)) * 100);
      laypercentCount =
      (((alllays) / (allbacks + alllays)) * 100);

      seventypercent. Add(tick,
      70);
      thirtypercent.A dd(tick,
      30);

      backPercent.Add (tick,
      percentCount);




      if (backAmountAvai lable1 <
      layAmountAvaila ble1 && backAmountAvail able2 < layAmountAvaila ble2 &&
      backAmountAvail able3 < layAmountAvaila ble3)
      {

      Allamountschang e.Add(tick, 25);
      }
      else if
      (backAmountAvai lable1 layAmountAvaila ble1 && backAmountAvail able2 >
      layAmountAvaila ble2 && backAmountAvail able3 layAmountAvaila ble3)
      {

      Allamountschang e.Add(tick,75);
      }
      else
      {

      Allamountschang e.Add(tick, 50);
      }


      if (tick < 16)
      {


      //total amount
      available

      //
      backData.Add(al lbacks);
      //
      layData.Add(all lays);
      //
      totalavailablet oback.Add(Conve rt.ToDouble(tic k),
      Convert.ToDoubl e(allbacks));
      //
      totalavailablet olay.Add(Conver t.ToDouble(tick ),
      Convert.ToDoubl e(alllays));

      //Odds

      backPriceOdds.A dd(backPrice1);//constant


      Backodds.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(backPrice1));//
      odds graph


      //averages
      //addAveback.Add( 0);
      // addAvelay.Add(0 );
      addAvebackOdds. Add(0);
      ;

      //bols
      //
      upperbackcalcs. Add(0);
      //
      lowerbackcalcs. Add(0);
      //
      upperlaycalcs.A dd(0);
      //
      lowerlaycalcs.A dd(0);


      upperbackOddsca lcs.Add(0);

      lowerbackOddsca lcs.Add(0);


      //
      bvlbolschange.A dd(tick, 0);
      tick++;
      }
      else if (tick 15)
      {

      //total amount
      available

      //
      backData.Add(al lbacks);
      //
      layData.Add(all lays);

      //Odds


      backPriceOdds.A dd(backPrice1);
      //
      backPercent.Add (tick, percentCount);

      //total amount
      available graph
      //
      totalavailablet oback.Add(Conve rt.ToDouble(tic k),
      Convert.ToDoubl e(allbacks));
      //
      totalavailablet olay.Add(Conver t.ToDouble(tick ),
      Convert.ToDoubl e(alllays));
      //Odds graph

      Backodds.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(backPrice1));


      //Backave.Clear() ;
      //Layave.Clear();
      BackaveOdds.Cle ar();


      //get average & stddev
      int w =
      ((backPriceOdds .Count) - 15);
      for (int z =
      ((backPriceOdds .Count) - 15); z < ((backPriceOdds .Count)); z++)
      {
      //averages
      //
      Backave.Add(bac kData[z]);
      //
      Layave.Add(layD ata[z]);

      BackaveOdds.Add (backPriceOdds[z]);

      }

      //ave calcs
      // Avelay =
      GetAvg(Layave);
      // Aveback =
      GetAvg(Backave) ;

      AvebackOdds =
      GetAvg(BackaveO dds);
      //dev calcs
      //stdbackDev =
      GetStandardDevi ation(Backave);
      //stdLayDev =
      GetStandardDevi ation(Layave);
      stdbackDevOdds =
      GetStandardDevi ation(BackaveOd ds);


      //ave constants
      //
      addAveback.Add( Aveback);
      //
      addAvelay.Add(A velay);

      addAvebackOdds. Add(AvebackOdds );


      //bols constants
      //
      upperbackcalcs. Add(Aveback + (1.9 * stdbackDev));
      //
      lowerbackcalcs. Add(Aveback - (1.9 * stdbackDev));
      //
      upperlaycalcs.A dd(Avelay + (1.9 * stdLayDev));
      //
      lowerlaycalcs.A dd(Avelay - (1.9 * stdLayDev));


      upperbackOddsca lcs.Add(Aveback Odds + (1.9 * stdbackDevOdds) );

      lowerbackOddsca lcs.Add(Aveback Odds - (1.9 * stdbackDevOdds) );


      //ave graph
      //
      amountbackAvera ge.Add(Convert. ToDouble(tick),
      Convert.ToDoubl e(Aveback));
      //
      amountlayAverag e.Add(Convert.T oDouble(tick),
      Convert.ToDoubl e(Avelay));

      amountbackAvera geOdds.Add(Conv ert.ToDouble(ti ck),
      Convert.ToDoubl e(AvebackOdds)) ;

      //bols graph
      //
      upperBack.Add(C onvert.ToDouble (tick), Convert.ToDoubl e(Aveback + (1.9
      * stdbackDev)));
      //
      lowerBack.Add(C onvert.ToDouble (tick), Convert.ToDoubl e(Aveback - (1.9
      * stdbackDev)));
      //
      upperlay.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(Avelay + (1.9 *
      stdLayDev)));
      //
      lowerlay.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(Avelay - (1.9 *
      stdLayDev)));

      upperBackOdds.A dd(Convert.ToDo uble(tick), Convert.ToDoubl e(AvebackOdds
      + (1.9 * stdbackDevOdds) ));

      lowerBackOdds.A dd(Convert.ToDo uble(tick), Convert.ToDoubl e(AvebackOdds
      - (1.9 * stdbackDevOdds) ));


      //bols bars
      //amount
      //backBols.Clear( );
      // layBols.Clear() ;
      //backValue =
      (allbacks - (Aveback - (1.9 * stdbackDev))) / ((Aveback + (1.9 *
      stdbackDev)) - (Aveback - (1.9 * stdbackDev)));
      // layValue = (alllays
      - (Avelay - (1.9 * stdLayDev))) / ((Avelay + (1.9 * stdLayDev)) -
      (Avelay - (1.9 * stdLayDev)));

      // linediffs.Add(t ick,
      2.25);
      //if (backValue < 0.2
      && layValue 0.9)
      // {
      //
      bvlbolschange.A dd(tick, 2.5);
      // }
      // else if (backValue >
      0.9 && layValue < 0.2)
      // {
      //
      bvlbolschange.A dd(tick, 2);
      // }
      // else
      // {
      //
      bvlbolschange.A dd(tick, 2.25);
      // }


      //back odds bols dif




      backoddsvalue =
      (backPrice1 - (AvebackOdds - (1.9 * stdbackDevOdds) )) / ((AvebackOdds
      + (1.9 * stdbackDevOdds) ) - (AvebackOdds - (1.9 * stdbackDevOdds) ));


      if (backoddsvalue < 0)
      {

      oddsbolschange. Add(tick, 0);
      }
      else if (backoddsvalue
      1)
      {

      oddsbolschange. Add(tick, -1);
      }
      else
      {

      oddsbolschange. Add(tick, 0);
      }


      //bandwidth
      //bandBackamountw idth
      = ((Aveback + (1.9 * stdbackDev)) - (Aveback - (1.9 * stdbackDev))) /
      Aveback; ;
      // bandLayamountwi dth =
      ((Avelay + (1.9 * stdLayDev)) - (Avelay - (1.9 * stdLayDev))) /
      Avelay;



      //backBols.Add(1,
      backValue);
      //layBols.Add(1,
      layValue);

      tick++;
      }


      availCreateGrap h(zedGraphContr ol1);

      }
      }

      }

      }
      else
      {
      timer1.Stop();
      lblLastRefresh. Text =
      status[2].ToString();
      lblMarketStatus .Text =
      status[2].ToString();

      }
      }
      else
      {
      timer1.Stop();
      panelInPlay.Vis ible = true;


      }

      }
      //'============== =============== =============== =============== =============== =============== =============== =============== =

      else if (respAU != null)
      {

      string[] status;







      string[] prices =
      (respAU.marketP rices).Split('| '); // will return an array of 3 strings
      etc.

      if (prices[0].Contains("NR") )
      {
      status = prices[0].Split('~');

      prices = (respAU.marketP rices).Split(': '); //
      will return an array of 3 strings etc.


      }
      else
      {
      prices = (respAU.marketP rices).Split(': '); //
      will return an array of 3 strings etc.

      status = prices[0].Split('~');

      }



      double inplay = double.Parse(st atus[3]);
      if (inplay == 0)
      {

      if (status[2] != "CLOSED")
      {
      if (status[2] != "SUSPENDED" )
      {
      lblMarketStatus .Text = status[2];
      lblLastRefresh. Text = status[8];

      for (int i = 1; i <
      (prices.GetUppe rBound(0)) + 1; i++)
      {
      if ((prices[i].Contains("\\") ) |
      (prices[i].Contains(")")) )
      {
      }
      else
      {
      string[] data =
      prices[i].Split('|');
      string[] ids =
      data[0].Split('~');
      string comb = data[1] +
      data[2];
      string[] values =
      comb.Split('~') ;
      if (ids[0] ==
      selectionId.ToS tring())
      {



      string rowName = ids[0];



      MarketViewRow row =
      (MarketViewRow) m_marketViewRow s[rowName];

      double backPrice1 = 0.0;
      backAmountAvail able1 = 0.0;
      if (values.Length 1)
      {
      if (values[0] != null)
      {
      backPrice1 =
      double.Parse(va lues[0]);
      backAmountAvail able1 =
      double.Parse(va lues[1]);
      }
      }

      double backPrice2 = 0.0;
      backAmountAvail able2 = 0.0;
      if (values.Length 5)
      {
      if (values[4] != null)
      {
      backPrice2 =
      double.Parse(va lues[4]);
      backAmountAvail able2 =
      double.Parse(va lues[5]);
      }
      }

      double backPrice3 = 0.0;
      backAmountAvail able3 = 0.0;
      if (values.Length 9)
      {
      if (values[8] != null)
      {
      backPrice3 =
      double.Parse(va lues[8]);
      backAmountAvail able3 =
      double.Parse(va lues[9]);
      }
      }

      double layPrice1 = 0.0;
      layAmountAvaila ble1 = 0.0;
      if (values.Length 13)
      {
      if (values[12] != null)
      {
      layPrice1 =
      double.Parse(va lues[12]);
      layAmountAvaila ble1 =
      double.Parse(va lues[13]);
      }
      }

      double layPrice2 = 0.0;
      layAmountAvaila ble2 = 0.0;
      if (values.Length 17)
      {
      if (values[16] != null)
      {
      layPrice2 =
      double.Parse(va lues[16]);
      layAmountAvaila ble2 =
      double.Parse(va lues[17]);
      }
      }

      double layPrice3 = 0.0;
      layAmountAvaila ble3 = 0.0;
      if (values.Length 21)
      {
      if (values[20] != null)
      {
      layPrice3 =
      double.Parse(va lues[20]);
      layAmountAvaila ble3 =
      double.Parse(va lues[21]);
      }
      }
      percentCount = 50;
      laypercentCount = 50;

      //
      =============== =============== =============== =============== =============== =============== ===========
      //CALCS

      row.DisplayPric es("au",
      backPrice1, backAmountAvail able1, backPrice2, backAmountAvail able2,
      backPrice3, backAmountAvail able3, layPrice1, layAmountAvaila ble1,
      layPrice2, layAmountAvaila ble2, layPrice3, layAmountAvaila ble3);

      double allbacks =
      (backAmountAvai lable1 + backAmountAvail able2 + backAmountAvail able3);
      double alllays =
      (layAmountAvail able1 + layAmountAvaila ble2 + layAmountAvaila ble3);
      double totalbacklay =
      (allbacks + alllays);

      percentCount = (((allbacks) /
      (allbacks + alllays)) * 100);
      laypercentCount =
      (((alllays) / (allbacks + alllays)) * 100);

      seventypercent. Add(tick, 70);
      thirtypercent.A dd(tick, 30);






      if (backAmountAvai lable1 <
      layAmountAvaila ble1 && backAmountAvail able2 < layAmountAvaila ble2 &&
      backAmountAvail able3 < layAmountAvaila ble3)
      {
      Allamountschang e.Add(tick,
      25);
      }
      else if (backAmountAvai lable1
      layAmountAvaila ble1 && backAmountAvail able2 layAmountAvaila ble2 &&
      backAmountAvail able3 layAmountAvaila ble3)
      {
      Allamountschang e.Add(tick,
      75);
      }
      else
      {
      Allamountschang e.Add(tick,
      50);
      }


      if (tick < 16)
      {


      //total amount available

      backData.Add(al lbacks);
      layData.Add(all lays);


      //Odds

      backPriceOdds.A dd(backPrice1);


      Backodds.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(backPrice1));
      backPercent.Add (tick,
      percentCount);

      //averages
      addAveback.Add( 0);
      addAvelay.Add(0 );
      addAvebackOdds. Add(0);
      ;

      //bols
      upperbackcalcs. Add(0);
      lowerbackcalcs. Add(0);
      upperlaycalcs.A dd(0);
      lowerlaycalcs.A dd(0);

      upperbackOddsca lcs.Add(0);
      lowerbackOddsca lcs.Add(0);


      bvlbolschange.A dd(tick,
      0);
      tick++;
      }
      else if (tick 15)
      {

      //total amount available

      backData.Add(al lbacks);
      layData.Add(all lays);

      //Odds


      backPriceOdds.A dd(backPrice1);
      backPercent.Add (tick,
      percentCount);


      //Odds graph

      Backodds.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(backPrice1));


      Backave.Clear() ;
      Layave.Clear();
      BackaveOdds.Cle ar();


      //get average & stddev
      int w =
      ((backPriceOdds .Count) - 15);
      for (int z =
      ((backPriceOdds .Count) - 15); z < ((backPriceOdds .Count)); z++)
      {
      //averages

      Backave.Add(bac kData[z]);

      Layave.Add(layD ata[z]);

      BackaveOdds.Add (backPriceOdds[z]);

      }

      //ave calcs
      Avelay = GetAvg(Layave);
      Aveback = GetAvg(Backave) ;

      AvebackOdds =
      GetAvg(BackaveO dds);
      //dev calcs
      stdbackDev =
      GetStandardDevi ation(Backave);
      stdLayDev =
      GetStandardDevi ation(Layave);
      stdbackDevOdds =
      GetStandardDevi ation(BackaveOd ds);


      //ave constants
      addAveback.Add( Aveback);
      addAvelay.Add(A velay);

      addAvebackOdds. Add(AvebackOdds );


      //bols constants
      upperbackcalcs. Add(Aveback
      + (1.9 * stdbackDev));
      lowerbackcalcs. Add(Aveback
      - (1.9 * stdbackDev));
      upperlaycalcs.A dd(Avelay +
      (1.9 * stdLayDev));
      lowerlaycalcs.A dd(Avelay -
      (1.9 * stdLayDev));


      upperbackOddsca lcs.Add(Aveback Odds + (1.9 * stdbackDevOdds) );

      lowerbackOddsca lcs.Add(Aveback Odds - (1.9 * stdbackDevOdds) );


      //ave graph

      amountbackAvera ge.Add(Convert. ToDouble(tick),
      Convert.ToDoubl e(Aveback));

      amountlayAverag e.Add(Convert.T oDouble(tick),
      Convert.ToDoubl e(Avelay));

      amountbackAvera geOdds.Add(Conv ert.ToDouble(ti ck),
      Convert.ToDoubl e(AvebackOdds)) ;

      //bols graph

      upperBack.Add(C onvert.ToDouble (tick), Convert.ToDoubl e(Aveback + (1.9
      * stdbackDev)));

      lowerBack.Add(C onvert.ToDouble (tick), Convert.ToDoubl e(Aveback - (1.9
      * stdbackDev)));

      upperlay.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(Avelay + (1.9 *
      stdLayDev)));

      lowerlay.Add(Co nvert.ToDouble( tick), Convert.ToDoubl e(Avelay - (1.9 *
      stdLayDev)));

      upperBackOdds.A dd(Convert.ToDo uble(tick), Convert.ToDoubl e(AvebackOdds
      + (1.9 * stdbackDevOdds) ));

      lowerBackOdds.A dd(Convert.ToDo uble(tick), Convert.ToDoubl e(AvebackOdds
      - (1.9 * stdbackDevOdds) ));


      //bols bars
      //amount
      backBols.Clear( );
      layBols.Clear() ;
      backValue = (allbacks -
      (Aveback - (1.9 * stdbackDev))) / ((Aveback + (1.9 * stdbackDev)) -
      (Aveback - (1.9 * stdbackDev)));
      layValue = (alllays -
      (Avelay - (1.9 * stdLayDev))) / ((Avelay + (1.9 * stdLayDev)) -
      (Avelay - (1.9 * stdLayDev)));

      linediffs.Add(t ick, 2.25);
      if (backValue < 0.2 &&
      layValue 0.9)
      {

      bvlbolschange.A dd(tick, 2.5);
      }
      else if (backValue 0.9
      && layValue < 0.2)
      {

      bvlbolschange.A dd(tick, 2);
      }
      else
      {

      bvlbolschange.A dd(tick, 2.25);
      }


      //back odds bols dif




      backoddsvalue =
      (backPrice1 - (AvebackOdds - (1.9 * stdbackDevOdds) )) / ((AvebackOdds
      + (1.9 * stdbackDevOdds) ) - (AvebackOdds - (1.9 * stdbackDevOdds) ));


      if (backoddsvalue < 0)
      {

      oddsbolschange. Add(tick, 0);
      }
      else if (backoddsvalue >
      1)
      {

      oddsbolschange. Add(tick, -1);
      }
      else
      {

      oddsbolschange. Add(tick, 0);
      }


      //bandwidth
      bandBackamountw idth =
      ((Aveback + (1.9 * stdbackDev)) - (Aveback - (1.9 * stdbackDev))) /
      Aveback; ;
      bandLayamountwi dth =
      ((Avelay + (1.9 * stdLayDev)) - (Avelay - (1.9 * stdLayDev))) /
      Avelay;



      backBols.Add(1,
      backValue);
      layBols.Add(1, layValue);




      tick++;
      }


      availCreateGrap h(zedGraphContr ol1);




      }
      }
      }
      }
      else
      {
      timer1.Stop();
      lblLastRefresh. Text =
      status[2].ToString();
      lblMarketStatus .Text =
      status[2].ToString();

      }

      }
      else
      {
      timer1.Stop();
      lblLastRefresh. Text =
      status[2].ToString();
      lblMarketStatus .Text =
      status[2].ToString();

      }
      }
      else
      {
      timer1.Stop();
      lblLastRefresh. Text = "IN PLAY";
      lblMarketStatus .Text = "IN PLAY";

      }
      }
      }//FIRST ELSE
      }//INV

      #endregion

      regards robert

      Comment

      • RobcPettit@yahoo.co.uk

        #4
        Re: multi application

        Ok, I will eliminate the api first then atack the code. In the meen
        time thanks for your time.
        Regards Robert

        Comment

        Working...