Sorry, cut and paste error killed my post, then I decided to go look
for someone else to confirm the problem.
With a standard calendar event, the code below works as expected -- it
prints the reminder information in a textbox. However, with a
recurring event, we get a random number for event.Reminders.Count on
every loop traversal as if a pointer is falling off the end of a list
somewhere -- infinite loop until memory is exhausted in foreach
reminder loop. Using VS 2008 sp1, latest patches, .net 3.5, latest
download of .Net google api.
private void doit()
{
CalendarService myService = new CalendarService
("testapp");
string feedUrl;
foreach (Keyword keyword in Keyword.GetAll())
{
EventFeed myResultsFeed = null;
if (keyword.GoogleCalendar != null &&
keyword.GoogleCalendar != "")
{
feedUrl = keyword.GoogleCalendar.Replace("/basic",
"/full"); // valid, external
EventQuery myQuery = new EventQuery(feedUrl);
myQuery.StartTime = new DateTime
(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
myQuery.EndTime = myQuery.StartTime.AddMonths
(1).AddSeconds(-1);
try
{
myResultsFeed = myService.Query(myQuery);
}
catch
{
// Probably a permission error
Response.Write(keyword.FullKeyword + "Failed
to read calendar " + feedUrl);
}
foreach (Google.GData.Calendar.EventEntry entry in
myResultsFeed.Entries)
{
string content = entry.Content.Content == "" ?
entry.Title.Text : entry.Content.Content;
foreach (When time in entry.Times)
{
DateTime start = time.StartTime;
foreach (Reminder reminder in
entry.Reminders)
{
if (reminder.Method ==
Reminder.ReminderMethod.alert)
{
DateTime remindertime =
start.AddDays(-1 * reminder.Days).AddHours(-1 *
reminder.Hours).AddMinutes(-1 * reminder.Minutes);
// Only add reminders that occur
today
if (remindertime.ToShortDateString
() == DateTime.Now.ToShortDateString())
{
Response.Write
(keyword.FullKeyword + "\t" + remindertime.ToString() + "\t" +
content);
} // if reminder is today
} // if reminder method is alert
} // foreach reminder
} // foreach time
} // foreach entry
} // if keyword.GoogleCalendar exists
} // foreach keyword
return;
}
On Dec 9, 4:20 pm, "Ray Baxter" <[EMAIL PROTECTED]> wrote:
> Could you elaborate?
>
> It is unclear what you code returns and what you expect it to return.
> Plus your code seems to have cut off prematurely. There are unclosed
> loops and the last loop appears to be empty.
>
> Thanks,
>
> Ray
>
>
>
> On Tue, Dec 9, 2008 at 10:43 AM, Travis <[EMAIL PROTECTED]> wrote:
>
> > 1. Create calendar
> > 2. Create a daily recurring event "Test"
> > 3. Use the following code:
>
> > EventQuery myQuery = new EventQuery(feedUrl);
> > myQuery.StartTime = new DateTime(DateTime.Now.Year,
> > DateTime.Now.Month, DateTime.Now.Day);
>
> > EventFeed myResultsFeed = myService.Query(myQuery);
>
> > foreach (Google.GData.Calendar.EventEntry entry in
> > myResultsFeed.Entries)
> > {
> > foreach (When time in entry.Times)
> > {
> > DateTime start = time.StartTime;
>
> > foreach (Reminder reminder in entry.Reminders)- Hide
> > quoted text -
>
> - Show quoted text -
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Calendar Data API" group.
To post to this group, send email to
[email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/google-calendar-help-dataapi?hl=en
-~----------~----~----~----~------~----~------~--~---